我的数据框如下所示......
V1 | V2 | V3 | V4
1 | NA | 2 | 5
NA | 2 | NA | NA
1 | 1 | 1 | 1
我想将数据帧转换为以下内容而没有标题...
V1 | NA | V3 | V4
V2 | NA | NA | NA
V1 | V2 | V3 | V4
换句话说,我希望每个单元格中的标题名称都是一个列号。
数据
dd <- read.table(header = TRUE, strip.white = TRUE, sep = '|',
text = "V1 | V2 | V3 | V4
1 | NA | 2 | 5
NA | 2 | NA | NA
1 | 1 | 1 | 1")
答案 0 :(得分:1)
您的预期输出对我来说似乎很奇怪,但如果我理解得很好,您想用列名替换每个非NA吗?
你可以这样做:
df[!is.na(df)] <- rep(names(df), each=nrow(df))[!is.na(df)]
给出这些数据:
df=data.frame(V1=c(1, NA, 1), V2=c(NA, 2, 1), V3=c(2, NA, 1), V4=c(5, NA, 1))
关于你希望摆脱标题,这在data.frame中是不可能的。您可以将其转换为字符矩阵,并在需要时删除dimnames属性...
df2 = as.matrix(df); attributes(df2)$dimnames<-NULL