我有两个数据帧
数据框a
a A 1 4 7
b B 2 5 8
c C 3 6 9
数据框b
a A 10 13 16
b B 11 14 17
c C 12 15 18
我希望创建一个新的数据框c
,它保留a
的前两列,并添加第3列到第5列的相应数字元素。
我使用了以下代码:
c<-data.frame(matrix(NA, nrow=3, ncol=5))
for (i in 1:5) {
if (i==1:2) {c[,i] <- a[,i]}
else {c[,i] <- round((a[,i]+b[,i])/2,0)}
}
write.xlsx(c, "c.xlsx")
但是,输出看起来像Excel中的以下内容
X1 X2 X3 X4 X5
1 a #N/A 11 17 23
2 b #N/A 13 19 25
3 c #N/A 15 21 27
我认为i==1:2
部分可能存在问题,我是否应该知道如何修改代码?
谢谢!
答案 0 :(得分:0)
这可能有所帮助
a = read.table(header = F, stringsAsFactors = F, text = "a A 1 4 7
b B 2 5 8
c C 3 6 9")
b = read.table(header = F, stringsAsFactors = F, text = "a A 10 13 16
b B 11 14 17
c C 12 15 18")
# Using for loop:
c = data.frame(matrix(NA, nrow=3, ncol=5))
for (i in 1:5) {
if (i %in% 1:2) {c[,i] <- a[,i]}
else {c[,i] <- round((a[,i]+b[,i])/2,0)}
}
# Even without a loop:
c = cbind(a[,1:2], round((a[,3:5] + b[,3:5]) / 2, 0))
print(c)
# V1 V2 V3 V4 V5
# 1 a A 6 8 12
# 2 b B 6 10 12
# 3 c C 8 10 14