我的data.frame
无法从宽表转换为长表。
目前看来:
Code Country 1950 1951 1952 1953 1954
AFG Afghanistan 20,249 21,352 22,532 23,557 24,555
ALB Albania 8,097 8,986 10,058 11,123 12,246
现在我想把这个data.frame
转换成一个长的data.frame
。
像这样的:
Code Country Year Value
AFG Afghanistan 1950 20,249
AFG Afghanistan 1951 21,352
AFG Afghanistan 1952 22,532
AFG Afghanistan 1953 23,557
AFG Afghanistan 1954 24,555
ALB Albania 1950 8,097
ALB Albania 1951 8,986
ALB Albania 1952 10,058
ALB Albania 1953 11,123
ALB Albania 1954 12,246
我已经看过并尝试过使用melt()
和reshape()
函数
就像有些人在类似的问题中提出的那样。
然而,到目前为止,我只得到混乱的结果。
如果可能的话,我想用reshape()
函数来完成,因为
它看起来有点好处理。
三种替代解决方案:
1)带data.table:
您可以使用与}还有比来自
reshape2
包中相同的melt
函数(这是一个经过扩展和改进的实现)。^来自data.table
的{reshape2
的melt
函数更多的参数。例如,还可以指定变量列的名称:它给出:
一些替代符号:
2)与tidyr:
一些替代符号:
3)与reshape2:
给出相同结果的一些替代符号:
注:
NA
值,可以将na.rm = TRUE
添加到melt
函数以及gather
函数中。数据的另一个问题是R将这些值作为字符值读取(这是数字中
,
的结果)。你可以用gsub
和as.numeric
修复它:或者直接用
data.table
或dplyr
:数据:
reshape()
需要一段时间来适应,就像melt
/cast
。假设数据帧名为d
,这里有一个带整形的解决方案:使用重塑包:
相关问题 更多 >
编程相关推荐