组合gsub()并将变量名称用作R中的列

理查德·萨默斯

我希望有人可以帮助我:)

我有一个约1000列的数据框。在其中,我有这样命名的列:X1,X2,X3,X4,X5,X6等... Y1,Y2,Y3,Y4,Y5,Y6等...

df <- data.frame("X1" = c("Yes","No","Yes","NA","NA","NA","Yes","No","Yes","NA","NA","NA","NA"),
                "X2" = c("Yes","NA","NA","NA","NA","Yes","NA","NA","NA","NA","Yes","NA","NA"), 
                "X3" = c("Yes","NA","NA","NA","Yes","No","Yes","NA","Yes","NA","NA","NA", "Yes"),
                "X4" = c("Yes","No","Yes","NA","NA","NA","Yes","No","Yes","NA","NA","NA","NA"),
                "X5" = c("Yes","NA","NA","NA","NA","Yes","NA","NA","NA","NA","Yes","NA","NA"), 
                "X6" = c("Yes","NA","NA","NA","Yes","No","Yes","NA","Yes","NA","NA","NA", "Yes"),
                "Y1" = c("Yes","No","Yes","NA","NA","NA","Yes","No","Yes","NA","NA","NA","NA"),
                "Y2" = c("Yes","NA","NA","NA","NA","Yes","NA","NA","NA","NA","Yes","NA","NA"), 
                "Y3" = c("Yes","NA","NA","NA","Yes","No","Yes","NA","Yes","NA","NA","NA", "Yes"),
                "Y4" = c("Yes","No","Yes","NA","NA","NA","Yes","No","Yes","NA","NA","NA","NA"),
                "Y5" = c("Yes","NA","NA","NA","NA","Yes","NA","NA","NA","NA","Yes","NA","NA"), 
                "Y6" = c("Yes","NA","NA","NA","Yes","No","Yes","NA","Yes","NA","NA","NA", "Yes"))

在某些列中,我将“ Yes”替换为1,将“ No”替换为0,并将其他任何内容替换为NA。

我已经试过了:

names = c("X","Y")

for (name in names){
  try(
    for (j in 1:6){
      j <- toString(j)
      colname <- paste(name , j, sep="")
      df$colname <- gsub("Yes", as.integer(1), df$colname)
      df$colname <- gsub("No", as.integer(0), df$colname)
    })}

但是,这不起作用,并引发错误消息:

Error in `$<-.data.frame`(`*tmp*`, "colname", value = character(0)) : replacement has 0 rows, data has 13
  • 我的第一个问题是:为什么列名引用不正确?

  • 第二个问题是:如何用“ NA”替换这些列中非0或1的任何内容?

这可能是我忽略的非常简单的事情,但是我不太清楚该怎么做。任何帮助将不胜感激。

在此先感谢,Rich

摩根121

我不会在这里使用循环或gsub,您可以使用以下代码:

df[] <- lapply(df, function(x) x <- car::recode(x, "'Yes'=1; 'No'=0; 'NA'=NA"))

这将遍历数据框中的每一列,并根据需要重新编码值。如果将来获得更多价值,这也更容易扩展。

如果只需要某些列,则可以这样修改它:

df[, col_list] <- lapply(df[, col_list], function(x) x <- car::recode(x, "'Yes'=1; 'No'=0; 'NA'=NA"))

col_list您要更改的变量的向量在哪里您可以使用以下命令为他们grepcol_list <- grep('^X|Y', names(df), value = T)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

组合由 grep 在 R 中检索的变量名称(在公式中)

将列中的唯一特征强制转换为变量名称,并将原始特征伪编码为R中的变量

按行计算并将结果写入具有变量名称的列中

在单个mutate()语句中组合多个cross(),同时控制R中的变量名称

接受变量名称并将其在R中相互连接的函数

如何读取变量名称列表并将它们替换为 R 中的函数?

如何读取变量名称列表并将它们替换为 R 中的函数?

组合文本并将其用作量角器中的变量

R中的数据框变量名称

基于R中变量名称的总和

更改R中变量名称的功能

重命名R中的变量名称。

如何提取数据框的列标题(变量名称)并将其作为变量存储在其他数据框中?

Angular - 如何从函数中获取参数,并将其用作变量名来做某事?

如何选择列名并将其用作Python中变量名的输入?

将变量名称向量中的Inf / -Inf值替换为类似名称的变量向量(substr / grep / gsub)中的值

根据R中数据框列的变量名称选择值

在R中的lightgbm模型中提取变量名称

如何在R函数中检测自由变量名称

使用线性回归在r中循环变量名称

R:“查找”功能qdap中的“变量名称限制为”

R:对ggplot中的变量名称进行重新排序

将变量名称传递给R中的count()函数

在R中的循环中更改公式内的变量名称

如何获取R中的变量名称(替代)?

在R中将行元素用作名称并将值用作列的快速方法

R 编程:组合列表时如何更改变量名称?

如果数据框列中的变量名称与向量重命名变量中的名称匹配

不应将“父”用作javascript变量名称(保留字)