我有一个长数据集,我想将其变宽,并且我很好奇是否有一种方法可以使用R中的reshape2或tidyr包在一步中完成所有操作。
数据框架df
的样子是这样的:
id type transactions amount
20 income 20 100
20 expense 25 95
30 income 50 300
30 expense 45 250
我想要达到这个目标:
id income_transactions expense_transactions income_amount expense_amount
20 20 25 100 95
30 50 45 300 250
我知道可以通过reshape2来实现部分功能,例如:
dcast(df, id ~ type, value.var="transactions")
但是否有一种方法可以在一个步骤中重新塑造整个df,同时解决“transactions”和“amount”变量?并且最好使用新的更合适的列名?
tidyr
、dplyr
、data.table
、reshape
等等这些东西,当使用基本的R语言就可以如此简单地完成。 - David Arenburgreshape
的源代码,看起来它全部都是无尽的for
/apply
循环。可惜它不是用C/C++编写的,因为所有基本的R函数都应该是这样的。 - David Arenburgreshape()
很简单?”对此我只能说“哈哈哈哈”。 - hadleyreshape()
很简单,而是意味着此处的reshape()
方法实际上相当直截了当。 - A5C1D2H2I1M1N2O1R2T1