如何在R中添加来自多列的其他行?

我的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中这样做的最好方法是什么?

我们可以使用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 

你也可以试试tidyr:

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

如果你不想“新”列添加这个科迪(库“dplyr”):

 %>% select(id, V1)