如何将一些变量转换为数字,同时在 R 中保持其他变量相同

How can I convert some variables into numeric while keeping other variables same in R

这里我使用这段代码将因子转换为数值变量:

Table1_2[] <- lapply(Table1_2, function(x) as.numeric(as.character(x)))

但它会转换所有变量,所以我不能再在下图中使用 FIRM 变量。 我的问题是如何只将我想要的变量更改为数字变量,同时将其中一些变量保留为原始版本?

install.packages('remotes')


remotes::install_github("brunoruas2/gujarati",force = TRUE)

library(gujarati)


library(ggplot2)


Table1_2[] <- lapply(Table1_2, function(x) as.numeric(as.character(x)))


ggplot(Table1_2, aes(Table1_2$C.1, Table1_2$I) +geom_point() + facet_wrap(~Table1_2$FIRM)+theme(legend.position = "none",
        panel.grid = element_blank(),
        axis.title = element_blank(),
        axis.text = element_blank(),
        axis.ticks = element_blank(),
        panel.background = element_blank())

您可以通过限制列的输入和覆盖变量来对数据帧的子集(在您的情况下只有几个列)执行操作。假设您希望每一列都是数字,但名为 FIRM:

的列除外
col_is_not_FIRM <- colnames(Table1_2) != "FIRM"
Table1_2[col_is_not_FIRM] <- lapply(Table1_2 [col_is_not_FIRM], function(x) as.numeric(as.character(x)))

col_is_not_FIRM 在这种情况下是一个逻辑向量,告诉子集操作,哪些列到 select。您可以在此处找到几种在数据框中进行子集化的方法:https://www.statology.org/subset-data-frame-in-r/

请注意,您必须在 <- 的左侧和右侧进行子集化。否则 R 将尝试将较大的数据帧塞入较小的数据帧,反之亦然。