如何在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)