将行转换为R中的数据帧的列
问题描述:
我有一个数据框如下。将行转换为R中的数据帧的列
Date Time Object_Name Object_Value
7/28/2017 8:00 A1 58.56
7/28/2017 8:00 A2 51.66
.
.
.
7/28/2017 8:30 A1 60.2
7/28/2017 8:30 A2 65.2
我需要它转化这样的:
Date Time A1 A2
7/28/2017 8:00 58.5 51.6
7/28/2017 8:30 60.2 65.2
答
尝试
library(reshape2)
df
Date Time Object_Name Object_Value
1 7/28/2017 8:00 A1 58.56
2 7/28/2017 8:00 A2 51.66
3 7/28/2017 8:30 A1 60.20
4 7/28/2017 8:30 A2 65.20
dcast(df, Date + Time ~ Object_Name)
Date Time A1 A2
1 7/28/2017 8:00 58.56 51.66
2 7/28/2017 8:30 60.20 65.20
另外,
library(tidyr)
spread(df, Object_Name, Object_Value)
Date Time A1 A2
1 7/28/2017 8:00 58.56 51.66
2 7/28/2017 8:30 60.20 65.20
为了解决这个评论,上述作品好,如果你有独特的例子。例如考虑以下几点:
df
Date Time Object_Name Object_Value
1 7/28/2017 8:00 A1 58.56
2 7/28/2017 8:00 A1 50.00
3 7/28/2017 8:00 A2 51.66
4 7/28/2017 8:30 A1 60.20
5 7/28/2017 8:30 A2 65.20
看前两行,你可以看到,同样的日期,时间和OBJECT_NAME,我们有两个值。这意味着dcast
不知道该怎么做,并给出以下警告:Aggregation function missing: defaulting to length
。我们可以通过指定聚合函数来处理这个问题。例如,让我们取这些值的平均值:
dcast(df, Date + Time ~ Object_Name, fun.aggregate = mean)
Date Time A1 A2
1 7/28/2017 8:00 54.28 51.66
2 7/28/2017 8:30 60.20 65.20
我将值设为0和1,是否应该明确指定object_Value? – Anagha
警告:缺少聚合函数:默认为长度。和所有的值是0和1 – Anagha
请downvoter解释downvote,请? – coffeinjunky