【发布时间】:2019-02-10 18:08:59
【问题描述】:
我首先要说我正在努力学习 r,但这对我来说并不容易。与here 这篇文章类似,我试图匹配一个数据帧 (df) 中多列中的值,然后根据另一个数据帧 (df.key) 中的相应列替换这些值。这是我的示例 df:
name type place ttotal t01 t02 t03 t04 t05 t06 t07 t08 t09
joe cat SE 7 3 2 2 3 2 5 2 0 1
john cat SE 2 0 0 4 0 3 1 3 1 7
sue cat SE 1 2 0 5 0 4 1 4 3 0
jack cat SE 6 3 4 2 2 4 0 2 1 5
下面是我的 df.key,用于将 df$ttotal 到 t09 列中的上述值与 df.key$class 匹配,并相应地替换为 df.key$mid 中的值:
lo hi class mid
0 0 0 0.0
0 1 1 0.5
1 2 2 3.0
5 10 3 7.5
10 20 4 15.0
20 30 5 25.0
30 40 6 35.0
40 50 7 45.0
所以第一行应该是:
name type place ttotal t01 t02 t03 t04 t05 t06 t07 t08 t09
joe cat SE 45.0 7.5 3.0 3.0 7.5 3.0 25.0 3.0 0.0 0.5
这只是我尝试的一个匹配循环,但它填充了行中的 come 值:
for(i in 1:dim(df)[1]){
for(j in df$4:13) {
df[i,j] <- df.key$mid[match(i, df.key$class)]
}
}
感谢您的帮助。我想尝试得到一个与此有点相似的解决方案,希望我能理解它。
【问题讨论】:
标签: r loops replace pattern-matching match