我在一个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
答案 0 :(得分:1)
尝试data.table
:
library(data.table)
dt <- data.table(Col1 = c(rep("A", 4), rep("B", 4), rep("C", 4)),
Col2 = c(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4))
A <- c(10, 5, 2, 4)
B <- c(20, 19, 8, 5)
C <- c(30, 25, 20, 17)
dt[Col1 == "A", Col2 := A]
dt[Col1 == "B", Col2 := B]
dt[Col1 == "C", Col2 := C]
print(dt)
Col1 Col2
1: A 10
2: A 5
3: A 2
4: A 4
5: B 20
6: B 19
7: B 8
8: B 5
9: C 30
10: C 25
11: C 20
12: C 17
如果您需要将结果作为data.frame
,您始终可以通过
setDF(dt)
不复制。