通过正则表达式匹配列并使用 R dplyr 中的突变执行计算?



我得到了这样的数据帧:

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)))

最新更新