【发布时间】:2015-07-24 21:05:45
【问题描述】:
我有一个具有以下形式的数据框
ID1 | VALUE |ID2 | VALUE | ID3 | VALUE
111 | one |333 | three | 555 | five
222 | two | | NA | 666 | six
请注意,每列中的值/行数会有所不同(NA/空值)。
我希望结果如下所示:
ID | VALUE
111 | one
222 | two
333 | three
555 | five
666 | six
我尝试了以下方法:
x = as.matrix(df)
x= matrix(x,ncol = 2)
此过程混合了某些列的 ID 和 VALUE。我的猜测是这是因为 NA 和 NULL 值。
ID | VALUE
111 | one
222 | two
333 | three
five| 555
six | 666
您能否建议我的问题的快速解决方案?
优雅的解决方案
感谢nongkrong 和akrun 的解答。 我不知道速度,但完成工作的最优雅的解决方案如下:
my_final = data.frame(VALUE=unlist(my_data[c(TRUE,FALSE)]), ID=unlist(my_data[c(FALSE, TRUE)]))my_final = setNames(data.frame(lapply(split(as.list(my_data), c(F, T)), unlist)), c("VALUE", "ID"))
还要省略空行:
my_final_trimmed = my_final[complete.cases(my_final), ]
【问题讨论】:
标签: r data-manipulation