【问题标题】:How do you add additional rows from multiple columns in R?如何从 R 的多列中添加额外的行?
【发布时间】:2016-08-09 21:48:07
【问题描述】:

我的 DF 看起来像这样:

ID  V1    V2  V3
A   100  200    
B   100     
C   300     
D   400     
E   223  233   4

我想在 R 中对其进行转换,以便多个“V”列彼此下方并带有重复的 ID:

ID  V1
A   100
A   200
B   100
C   300
D   400
E   223
E   233
E   4

在 R 或 Excel 中执行此操作的最佳方法是什么?

【问题讨论】:

标签: r excel


【解决方案1】:

你也可以试试 tidyr:

library(tidyr)
df <- df %>% gather(new, V1, 2:4) %>% filter(!is.na(V1)) 

如果您不希望“新”列添加此代码(库“dplyr”):

%>% select(id, V1)

【讨论】:

  • gather 还有na.rm=TRUE
  • 我试过这样做,得到一个错误:过滤器错误(。,!is.na(V1)):找不到对象'V1'
  • 它应该可以工作。这里有字符数据的类比解决方案:link
【解决方案2】:

我们可以使用melt

library(data.table)
setnames(melt(setDT(df), id.var="ID", na.rm=TRUE)[order(ID), -2, with = FALSE], 2, "V1")[]
#   ID  V1
#1:  A 100
#2:  A 200
#3:  B 100
#4:  C 300
#5:  D 400
#6:  E 223
#7:  E 233
#8:  E   4

【讨论】:

  • 正是我想要的!谢谢!
猜你喜欢
  • 2020-11-25
  • 2020-03-18
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-10
相关资源
最近更新 更多