我得到了这样的数据帧:
uncalibrated_gyro_x uncalibrated_gyro_y uncalibrated_gyro_z
1 4 7
2 5 8
3 6 9
有时我会将这些列视为unc_gyr_x, unc_gyr_y, unc_gyr_z
无论如何,我需要计算这个的规范:sqrt(x^2 + y^2 + z^2)
这些列是包含 50 列的大型数据帧的一部分。
我怎样才能"告诉"mutate
使用regex
使用这些列,这些列有时作为uncalibrated_gyro_x,y,z
给出,有时作为unc_gyr_x,y,z
给出?
我知道有一个功能matches
但它在mutate
中对我不起作用.
请指教。
一种方法是有条件地重命名变量,使它们保持一致,然后从那里开始:
df %>%
rename_at(vars(starts_with("uncalibrated_gyro_")),
funs(sub("uncalibrated_gyro_", "unc_gyr_", .))) %>%
mutate(myvar = sqrt(rowSums(select(.,starts_with("unc_gyr_"))^2)))