将数据从一种格式转换为另一种格式

sil*_*ter 5 r dplyr

我使用的数据集包含存储为字符的数字。下面您可以看到使用 dput 函数提取的数据的数据示例:

structure(list(Y_O_13_Males = c("10", "0", "0", "0", "0", "0", 
"0", "0", "0", "0"), Y_O_13_Females = c("1", "0", "0", "0", "0", 
"0", "0", "0", "0", "0"), Y_O_13_Unknown = c("7", "0", "0", "0", 
"0", "0", "0", "0", "0", "0"), Y14_17_Males = c("2", "0", "0", 
"0", "0", "0", "0", "0", "0", "0"), Y14_17_Females = c("0", "0", 
"0", "0", "0", "0", "0", "0", "0", "0"), Y14_17_Unknown = c("0", 
"0", "0", "0", "0", "0", "0", "0", "0", "0"), Y18_34_Males = c("0", 
"0", "0", "0", "0", "0", "0", "0", "0", "0"), Y18_34_Females = c("0", 
"0", "0", "0", "0", "0", "0", "0", "0", "0"), Y18_34_Unknown = c("0", 
"0", "0", "0", "0", "0", "0", "0", "0", "0"), Y35_64_Males = c("0", 
"0", "0", "0", "0", "0", "0", "0", "0", "0"), Y35_64_Females = c("0", 
"0", "0", "0", "0", "0", "0", "0", "0", "0"), Y35_64_Unknown = c("0", 
"0", "0", "0", "0", "0", "0", "0", "0", "0"), Y65_And_Over_Males = c("0", 
"0", "0", "0", "0", "0", "0", "0", "0", "0"), Y65_And_Over_Females = c("0", 
"0", "0", "0", "0", "0", "0", "0", "0", "0"), Y65_And_Over_Unknown = c("0", 
"0", "0", "0", "0", "0", "0", "0", "0", "0"), Unknown_And_Over_Males = c("0", 
"0", "0", "0", "0", "0", "0", "0", "0", "0"), Unknown_And_Over_Females = c("0", 
"0", "0", "0", "0", "0", "0", "0", "0", "0"), Unknown_And_Over_Unknown = c("0", 
"0", "0", "0", "0", "0", "0", "0", "0", "0")), row.names = c(NA, 
-10L), class = c("tbl_df", "tbl", "data.frame"))
Run Code Online (Sandbox Code Playgroud)

现在我想将所有这些数据从字符格式转换为数字。我尝试使用这行代码但不起作用。

 df[,1:18]<-as.numeric(df[,1:18])
Run Code Online (Sandbox Code Playgroud)

那么有人可以帮助我如何解决这个问题吗?

Con*_*nos 7

使用dplyr,我会使用:

library(dplyr)
df %>% 
    mutate(
        across(
            .cols = where(is.character), 
            .fns = as.numeric
        )
    )
Run Code Online (Sandbox Code Playgroud)

这还假设您想要更改为数字所有字符变量。


Sot*_*tos 5

你需要应用它,即

df[1:18]<-lapply(df[1:18], as.numeric)
Run Code Online (Sandbox Code Playgroud)