在R中组合多个具有相同字段的行 [英] combine multiple rows with same field in R

查看:360
本文介绍了在R中组合多个具有相同字段的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数据集如下

  V1 < -  c(5,5,5,45,45,77 )
V2 < - c(low,low,medium,low,low,high)
V3 < ,10,3,1)
df< - cbind.data.frame(V1,V3,V2)

v1 v2 v3
5 10 low
5 3 low
5 6 medium
45 10 low
45 3 low
77 1 high

我想要的是

  v1低中高
5 13 6 0
45 13 0 0
77 0 0 1

/熔化,但没有成功。

解决方案

使用 rehape2 评论:

  library(reshape2)
dcast(df,V1〜V2,value.var =V3 ,fun = sum,fill = 0)

输出:

  V1高低中
1 5 0 13 6
2 45 0 13 0
3 77 1 0 0

如果我们想保留列的顺序:

  dcast(df,V1〜factor(V2,levels = unique(V2)),value.var =V3,sum)
pre>

输出:

  V1低中高
1 5 13 6 0
2 45 13 0 0
3 77 0 0 1


I have a dataset as following

V1 <- c(5,5,5,45,45,77)  
V2 <- c("low", "low", "medium", "low", "low", "high")  
V3 <- c(10,3,6,10,3,1)  
df <- cbind.data.frame(V1,V3,V2)  

  v1    v2    v3   
  5    10     low  
  5    3      low  
  5    6      medium  
  45   10     low  
  45   3      low  
  77   1      high  

I want it to be

   v1  low  medium  high  
   5         13    6      0  
  45        13     0     0  
  77         0     0      1  

I have tried with cast/melt with little success.

解决方案

Using rehape2 as Frank answered in the comments:

library(reshape2)    
dcast(df, V1 ~ V2, value.var = "V3", fun = sum, fill = 0)

Output:

  V1 high low medium
1  5    0  13      6
2 45    0  13      0
3 77    1   0      0

If we'd like to keep the column order:

dcast(df, V1  ~ factor(V2, levels = unique(V2)), value.var = "V3", sum)

Output:

  V1 low medium high
1  5  13      6    0
2 45  13      0    0
3 77   0      0    1

这篇关于在R中组合多个具有相同字段的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆