将R中的多列转换为数字,并将星号转换为NA

时间:2019-01-16 23:48:05

标签: r

我有一个数据集,出于隐私原因,其中一些数据已被删除,并用星号代替。 R将这些列读取为字符,但我希望它将数字读取为数字并将星号转换为“ NA”。

我可以很容易地一次转换一列:

df$colname1 <- as.numeric(as.character(df$colname1))

但是,当我尝试一次做很多列(从第4列开始)时,会遇到问题。

我在这个论坛上浏览了类似的问题,但是解决方案对我不起作用。如果我这样做:

df[,4:ncol(df)] <- lapply(df, function(x) as.numeric(as.character(x)))

...然后我得到两列,不过是NA。

如果我这样做:

for(i in c(4:ncol(df))) {
   df[,i] <- as.numeric(as.character(df[,i]));
 }

...然后所有列都不过是NA。

任何帮助将不胜感激。我是新手,所以请简单说明。

1 个答案:

答案 0 :(得分:0)

此代码将在将要更改为数字的列中起作用,然后将所有NA替换为0。

如果您想将所有列更改为数字列,只需使用mutate_all()

library(tidyverse)

df %>% 
  mutate_at(vars(column1), as.numeric)) %>% 
  replace(is.na(.), 0)