2016-11-04 72 views
1

縱列我有一個數據幀,看起來像下面...更換數值R中

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") 
+3

你是如何得到前兩列。如果這是一個錯誤,我想你想'dd [] < - colnames(dd)[col(dd)* !! dd]' – rawr

回答

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是不可能的。你可以將它轉換成字符矩陣,並刪除暗淡名稱屬性,如果你想...

df2 = as.matrix(df); attributes(df2)$dimnames<-NULL