[英]R Add column into data.frame, that is in list of data.frames
[英]Make a data.frame from 3 data.frames in R
我在R中有一個問題,我無法弄清楚如何解決。 我有3個數據框,例如:
data1 =
Stuff Freq
X 12
Y 3
Z 4
data2 =
Stuff Freq
X 6
Y 5
W 8
data3 =
Stuff Freq
Z 7
Y 4
我想從這些中創建一個data.frame,如下所示:
data =
Stuff Freq1 Freq2 Freq3
X 12 6 0
Y 3 5 7
Z 4 0 4
W 0 8 0
我試過這個:
data <- as.data.frame(c(data1[,1], data2[,1], data3[,1]), cbind(data1[,2], data2[,2], data3[,2]));
但它不起作用。 有沒有辦法解決這個問題?
您正在尋找merge
:
data1 <- data.frame(Stuff=c("X","Y","Z"), Freq=c(12,3,4))
data2 <- data.frame(Stuff=c("X","Y","W"), Freq=c(6,5,8))
data3 <- data.frame(Stuff=c("Z","Y"), Freq=c(7,4))
res <- merge(merge(data1, data2, by="Stuff", all=TRUE),
data3, by="Stuff", all=TRUE)
names(res)[-1] <- paste0("Freq", 1:3)
res[is.na(res)] <- 0
# Stuff Freq1 Freq2 Freq3
# 1 X 12 6 0
# 2 Y 3 5 4
# 3 Z 4 0 7
# 4 W 0 8 0
與Roland相同的想法,但一個線性解決方案和任意數量的data.frames一般:
Reduce(function(x,y){
res <- merge(x,y,by=1,all=T)
res[is.na(res)] <- 0
res
},
mget(ls(pattern='data.*')))
Stuff Freq.x Freq.y Freq
1 X 12 6 0
2 Y 3 5 4
3 Z 4 0 7
4 W 0 8 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.