我得到了这样的数据框:
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
中对我不起作用。
请告知。
答案 0 :(得分:2)
一种方法是有条件地重命名变量,以便它们一致并从那里开始:
df %>%
rename_at(vars(starts_with("uncalibrated_gyro_")),
funs(sub("uncalibrated_gyro_", "unc_gyr_", .))) %>%
mutate(myvar = sqrt(rowSums(select(.,starts_with("unc_gyr_"))^2)))