【发布时间】:2021-10-13 01:09:28
【问题描述】:
我有一列数据框df$c_touch:
c_touch
0
1
3
2
3
4
5
其中每个数字表示持续时间,例如0 = 2 mins, 1 = 5 mins, 2 = 10 mins, 3=15 mins, 4=20 mins, 5=30 mins。
我想添加另一列df$c_duration 来表示喜欢
c_touch c_duration
0 2
1 5
3 15
2 10
3 15
4 20
5 30
到目前为止,我一直在使用循环,这有点难看/凌乱,我宁愿不使用它。是否有一种无循环的方式来添加额外的列,特别是使用 dplyr mutate 函数(因为我正在尝试使用 dplyr 重写我的所有代码)?
【问题讨论】:
-
持续时间有规律吗?或者是c_touch的程度。即 5 之后是否有额外的持续时间?
-
是的。只需
merge您的data.frame 和一个将c_touch 映射到c_duration 的查找data.frame。您可以使用 base R 或 dplyr 或 data.table 或 ... -
只需创建一个命名的参考向量并匹配,例如
x <- setNames(c(2, 5, 10, 15, 20, 30), 0:5) ; x[match(df$c_touch, names(x))]。另外,我建议您在转换代码 dplyr 之前学习 R,因为您的代码包含循环,因为基础知识很幸运