2017-08-16 92 views
-2

我有一个数据框如下。将行转换为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 

回答

0

尝试

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

我将值设为0和1,是否应该明确指定object_Value? – Anagha

+0

警告:缺少聚合函数:默认为长度。和所有的值是0和1 – Anagha

+0

请downvoter解释downvote,请? – coffeinjunky

相关问题