【发布时间】:2016-11-12 23:03:45
【问题描述】:
我在一个 db 中有一个列是一个变量,在另一列中有一个相应的索引值。我想用一组不同的数据替换索引变量,但要基于第一列中的变量。
Col1 Col2
A 1
A 2
A 3
A 4
B 1
B 2
B 3
B 4
C 1
C 2
C 3
C 4
我想用依赖于 Col1 值的向量替换 1 到 4 值。
If A: replace c(1:4) with c(10, 5, 2, 4)
If B: replace c(1:4) with c(20, 19, 8, 5)
IF C: replace c(1:4) with c(30, 25, 20, 17)
这是我以前在不依赖于另一列的情况下在列中执行此操作的代码,但我无法让它在我目前的情况下工作:
col
1
2
3
4
index <- c(1:4)
foo <- c(4,5,6,8)
df$col <- foo[match(df$col, index)]
col
4
5
6
8
【问题讨论】:
-
有解决办法:
df$col2[df$col1 %in% "A"] <- c(10,5,2,4)df$col2[df$col1 %in% "B"] <- c(20, 19, 8, 5)df$col2[df$col1 %in% "C"] <- c(30, 25, 20, 17)