我想我的问题应该很容易解决。
所以我得到了这个df:
df1
ID STATUS.x STATUS.y
1 A N
2 B A
3 N N
4 B A
4 B B
5 N B
我想要生成的是将相同的ID组合在一起,而不是多行,而是多列:
df2
ID STATUS.x STATUS.y STATUS.x1 STATUS.y1
1 A N
2 B A
3 N N
4 B A B B
5 N B
这可能吗?
非常感谢,Andrea
答案 0 :(得分:1)
使用tidyverse
的解决方案。 select(ID, ends_with("1"), ends_with("2"))
是可选的。目的只是订购列。
library(tidyverse)
df2 <- df1 %>%
gather(STATUS, Value, -ID) %>%
group_by(ID, STATUS) %>%
mutate(Row = row_number()) %>%
unite("STATUS_new", STATUS, Row, sep = ".") %>%
spread(STATUS_new, Value) %>%
select(ID, ends_with("1"), ends_with("2")) %>%
ungroup()
df2
# # A tibble: 5 x 5
# ID STATUS.x.1 STATUS.y.1 STATUS.x.2 STATUS.y.2
# <int> <chr> <chr> <chr> <chr>
# 1 1 A N NA NA
# 2 2 B A NA NA
# 3 3 N N NA NA
# 4 4 B A B B
# 5 5 N B NA NA
数据强>
df1 <- read.table(text = "ID STATUS.x STATUS.y
1 A N
2 B A
3 N N
4 B A
4 B B
5 N B",
header = TRUE, stringsAsFactors = FALSE)