我的数据当前的格式如下:
ID PC1 PC2 PC3 PC4
5 8970 864
6 2800 2812 2801 284
我想要的是每个数据点的单独行,链接到唯一ID,以便:
ID PC
5 8970
5 864
6 2800
6 2812
6 2801
6 284
我意识到这是一个非常基本的问题,但是在寻找类似问题时,我只能找到相反的方法!
谢谢
library(dplyr)
library(tidyr)
df %>%
tidyr::pivot_longer(-ID, names_to = "PC_code", values_to = "PC") %>%
dplyr::select(-PC_code)
最好用NA's
填充空白,您可以通过以下方法轻松完成此操作:
library(dplyr)
df <- df %>% mutate_all(na_if,"")
我的幼稚解决方案,但明确:
library(reshape)
Input = (
'ID PC1 PC2 PC3 PC4
5 8970 864 NA NA
6 2800 2812 2801 284')
df = read.table(textConnection(Input), header = T)
df
res <- melt(df,id='ID')
res$variable <- NULL
res <- res[complete.cases(res),]
res <- res[order(res$ID),]
colnames(res)[2] <- 'PC'
res
ID PC
1 5 8970
3 5 864
2 6 2800
4 6 2812
6 6 2801
8 6 284