使用现有列及其对应的列表值添加数据框列

时间:2017-09-14 14:33:20

标签: r dataframe

我有一个数据框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循环,因为我的实际数据非常大,而且因为我希望看到一个不同的优雅解决方案。 有办法做到吗?

提前谢谢。

2 个答案:

答案 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