2012-09-23 28 views
0

我遇到问题...我有两个数据。有很多列的框架和这两个数据框架的长度不同,实际上一个框架有很多行和第二个数据框架。只有一行......但是在两个数据框架中都有相同名称的列。现在,我想将匹配的列彼此相乘。我没有解决它。请帮帮我。如何乘以属于不同数据的同名列。框架

回答

5

的命令,如果你想乘的所有列

mapply("*", DataFrame1, DataFrame2) 

应该工作。如果相关列只是数据框中所有列的子集,我们首先需要确定两个数据框中存在的列。

mapply("*", DataFrame1[intersect(names(DataFrame1), names(DataFrame2))], 
     DataFrame2[intersect(names(DataFrame1), names(DataFrame2))]) 
+0

我相信这种方法适用于任何一对数据帧,因为R会根据需要重复较短(较少的行),以匹配较长的数据帧。 –

+0

Sven Hohenstein谢谢你的回复......我只想问一个与此相关的更多问题,我可以以同样的方式使用一个data.frame的行名。例如mapply(“*”,DataFrame1 [intersect(row.names(DataFrame1),names(DataFrame2))],DataFrame2 [intersect(row.names(DataFrame1),names(DataFrame2))]) 致敬 Maria – Gongon

+0

@maria riaz这个命令应该工作:'mapply(“*”,as.data.frame(t(DataFrame1))[intersect(rownames(DataFrame1),names(DataFrame2))],DataFrame2 [intersect(rownames(DataFrame1),names DataFrame2))])'。通过这个命令,'DataFrame1'的行与'DataFrame2'的相应列(这里是单个值)相乘。 –

相关问题