我有一个数据集,出于隐私原因,其中一些数据已被删除,并用星号代替。 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。
任何帮助将不胜感激。我是新手,所以请简单说明。
答案 0 :(得分:0)
此代码将在将要更改为数字的列中起作用,然后将所有NA
替换为0。
如果您想将所有列更改为数字列,只需使用mutate_all()
。
library(tidyverse)
df %>%
mutate_at(vars(column1), as.numeric)) %>%
replace(is.na(.), 0)