Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 用列名替换列条目_R_Dataframe_Replace_Data.table - Fatal编程技术网

R 用列名替换列条目

R 用列名替换列条目,r,dataframe,replace,data.table,R,Dataframe,Replace,Data.table,我想用其列名替换data.table或data.frame中的值(即“x”) 例如: # sample data Substance <- LETTERS[1:10] Jan10 <- c("x","x",NA,NA,NA,"x","x","x","x",NA) Apr10 <- c("x",NA,"x",NA,"x","x","x","x",NA,"x") Jul10 <- c(NA,NA,NA,"x","x","x","x",NA,"x","x") Oct10 <

我想用其列名替换data.table或data.frame中的值(即“x”)

例如:

# sample data
Substance <- LETTERS[1:10]
Jan10 <- c("x","x",NA,NA,NA,"x","x","x","x",NA)
Apr10 <- c("x",NA,"x",NA,"x","x","x","x",NA,"x")
Jul10 <- c(NA,NA,NA,"x","x","x","x",NA,"x","x")
Oct10 <- c("x","x","x","x",NA,"x",NA,"x",NA,"x")

dt <- as.data.table(cbind(Substance, Jan10, Apr10, Jul10, Oct10))

# manually changing one column
dt[Jan10=="x", Jan10 := "Jan10"]
#示例数据

Substance我们在列上循环,使用
set
将NA值替换为列名

for(j in 2:ncol(dt)){
    set(dt, i=which(dt[[j]]=="x"), j=j, value = names(dt)[j])
 }

dt
#    Substance Jan10 Apr10 Jul10 Oct10
# 1:         A Jan10 Apr10    NA Oct10
# 2:         B Jan10    NA    NA Oct10
# 3:         C    NA Apr10    NA Oct10
# 4:         D    NA    NA Jul10 Oct10
# 5:         E    NA Apr10 Jul10    NA
# 6:         F Jan10 Apr10 Jul10 Oct10
# 7:         G Jan10 Apr10 Jul10    NA
# 8:         H Jan10 Apr10    NA Oct10
# 9:         I Jan10    NA Jul10    NA
#10:         J    NA Apr10 Jul10 Oct10

如果你有一个
data.frame
并且列不是因子,你可以做
indx,我确实有因子。它起作用了。如下所示,这个想法是要替换“x”,而不是NAs。因此,如果您计划在将来更改这些值,最好不要使用因子(或
cbind
),将
is.na(df)
更改为
df==“x”
)。我读了你的数据如下
dfsry,想写字符而不是因子。很好。谢谢你的快速回复。它起作用了。然而,我们的想法是更改“x”条目,而不是NAs。我相应地改变了它!