df <- data.frame(x=c(1,2,3,4), y1=c('a','a',NA,NA), y2=c(NA,NA,'b','b'))
x y1 y2
1 a <NA>
2 a <NA>
3 a b --> a and b share the same value of 3
4 <NA> b
我正在尝试将
y1
和 y2
堆叠到新的 y
列中,以便 y1
和 y2
的每个非 NA 值都获得其相应的 x
值。
输出应如下所示:
x y
1 a
2 a
3 a
3 b
4 b
3
重复出现,因为它同时出现在 a
和 b
中。
我尝试了
bind_rows
中的 dplyr
,但它似乎仅适用于不同的数据帧。
你试试
reshape(df2, idvar="x", direction="long", varying=2:3, v.names="y") |>
na.omit() |>
subset(select=-time)
给予
x y
1.1 1 a
2.1 2 a
3.1 3 a
3.2 3 b
4.2 4 b
输入更正:
df2 = data.frame(x=c(1,2,3,4), y1=c('a','a','a',NA), y2=c(NA,NA,'b','b'))