我有一个数据框df
。
V1 V2 V3
A 1 3
A 2 8
B 4 12
C 3 2
R 8 9
我还有一个列表lst
作为一个映射,我可以将一个字符串作为索引传递给列表,它将返回一个字符串值。 E.g。
lst[["A"]] => "AB"
lst[["B"]] => "BA"
lst[["C"]] => "FE"
lst[["R"]] => "WE"
我想要的是为df
创建一个与现有列相关的新列。 df
中的第一列将作为列表的键索引,它将在新列的同一行中返回相应的值。
我想最终:
V1 V2 V3 V4
A 1 3 AB
A 2 8 AB
B 4 12 BA
C 3 2 FE
R 8 9 WE
此外,我想避免for循环,因为我的实际数据非常大,而且因为我希望看到一个不同的优雅解决方案。 有办法做到吗?
提前谢谢。
答案 0 :(得分:2)
dat = read.table("clipboard", header = TRUE)
lst = list("AB", "BA", "FE", "WE")
names(lst) = c("A", "B", "C", "R")
dat$V4 = lst[dat$V1]
> dat
V1 V2 V3 V4
1 A 1 3 AB
2 A 2 8 AB
3 B 4 12 BA
4 C 3 2 FE
5 R 8 9 WE
答案 1 :(得分:0)
使用dplyr
:
df%>%mutate(V4=lst[V1])
# V1 V2 V3 V4
#1 A 1 3 AB
#2 A 2 8 AB
#3 B 4 12 BA
#4 C 3 2 FE
#5 R 8 9 WE