簡體   English   中英

按R中的列名替換行值

[英]Replacing row values by column name in R

我有一個數據框如下

df<- data.frame(a = c(1,2,3,4,5), 
                b = c(6,7,8,9,10), 
                c = c(11,12,13,14,15), 
                z = c("b","c","a","a","b"))

我正在嘗試替換行的列名稱等於列Z中的值的行值。所需的輸出如下

   a  b  c z
1  1 NA 11 b
2  2  7 NA c
3 NA  8 13 a
4 NA  9 14 a
5  5 NA 15 b

我正在考慮將以下代碼應用於每一行

If column name is equal to Z, replace value with NA

但無法弄清楚。 任何幫助贊賞

干杯!

矩陣索引match z列到colnames

df[cbind(seq(nrow(df)),match(df$z,colnames(df[1:3])))] <- NA
df

   a  b  c z
1  1 NA 11 b
2  2  7 NA c
3 NA  8 13 a
4 NA  9 14 a
5  5 NA 15 b

只有具有字母的列以字母順序排列時,這才會起作用:

> df[cbind(1:5,as.numeric(df$z))] <- rep(NA,5)
> df
   a  b  c z
1  1 NA 11 b
2  2  7 NA c
3 NA  8 13 a
4 NA  9 14 a
5  5 NA 15 b

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM