也许问题和答案已经发布,但我无法找到它。此外,有没有最佳方法来解决这个问题? 因为这只是某些行的示例,但我会将其应用于大约100万行的数据框。
我是R的新手。
我有两个数据框
DF1:
a b
1 1 0
2 2 0
3 2 0
4 3 0
5 5 0
和
DF2
l
1 A
2 B
3 C
4 D
5 E
我尝试做的是将DF1 $ a中的值与DF2的索引相匹配,并将这些值分配给DF1 $ b,这样我的结果将是以下方式。
DF1:
a b
1 1 A
2 2 B
3 2 B
4 3 C
5 5 E
我编写了一个for循环来执行此操作,但似乎我错过了一些东西
for(i in 1:length(df1$a)){
df1$b[i] <- df2$l[df1$a[i]]
}
这会产生以下结果:
DF1:
a b
1 1 1
2 2 2
3 2 2
4 3 3
5 5 5
提前致谢:)
答案 0 :(得分:2)
我们可以使用merge
根据行ID和a
合并两个数据框。
# Create example data frame
DF1 <- data.frame(a = c(1, 2, 2, 3, 5))
DF2 <- data.frame(l = c("A", "B", "C", "D", "E"),
stringsAsFactors = FALSE)
# Create a column called a in DF2 shows the row id
DF2$a <- row.names(DF2)
# Merge DF1 and DF2 by a
DF3 <- merge(DF1, DF2, by = "a", all.x = TRUE)
# Change the name of column l to be b
names(DF3) <- c("a", "b")
DF3
# a b
# 1 1 A
# 2 2 B
# 3 2 B
# 4 3 C
# 5 5 E