比较列名并创建新表
问题描述:
我想比较两个数据框中的两个列名,并使用原始数据框中匹配的列名创建一个新表。比较列名并创建新表
a<-data.frame(a1=c(1,2,3,4,5),a2=c(2,3,4,5,6),b1=c(3,4,5,6,7),c1=c(4,5,6,7,8))
b<-data.frame(c1=c(10,20,30,40,50),b1=c(20,30,40,50,60),d1=c(30,40,50,60,70))
我想创建一个新的数据框,当列名称(例如'c1'等)匹配时添加a + b。例如。我的新数据帧'c'现在将基于上述数据: c = data.frame(c1 = c(10 + 4,20 + 5,30 + 6,40 + 7,50 + 8), b1 = c(20 + 3,30 + 4,40 + 5,50 + 6,60 + 7))
我原来的数据帧比上面的要大得多,所以我用'for(i in 1: 10)”。但是,只有当两个数据框中的两个列名都是相同的顺序时它才起作用。
非常感谢您的帮助。
答
as.data.frame(lapply(intersect(names(a), names(b)),
function(name) a[name] + b[name]))
答
我能想到的更简单的方法是
c <- cbind(b[, which(colnames(b)%in% colnames(a))],
a[, which(colnames(a)%in% colnames(b))])
的是,你在找什么?
欢呼
+0
它的确营造具有相同COLUMNNAMES的表。谢谢。 – Bhante 2013-05-13 20:09:57
这正是我所期待的。谢谢。 – Bhante 2013-05-13 20:10:14
有什么办法可以绘制这些匹配的列名?我通过使用: lapply(intersect(names(a),names(b)),function(name)plot(a [name],b [name]))来替换添加图 它给出错误: Error in stripchart.default(x1,...):无效绘图方法 – Bhante 2013-05-13 20:17:57
请提出一个新帖子以解决其他问题。 – 2013-05-13 20:19:46