如何在适当位置改变列,但在R中保持相同的列类型

dxxyhpgq  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(137)

当我将多个 Dataframe 列设置为空时,如果另一个 Dataframe 列为空,则原地变异可以正常工作。但是,变异后的列的类型会发生变化。如何在不改变列类型的情况下进行此操作?
从data1开始:

我得到数据2:

有什么想法如何做到这一点,而不改变任何列类型?也许保存所有列类型之前的变化,然后设置他们回来后,变化?
下面是我创建data1并将其转换为data2的代码:

options(stringsasfactors = FALSE)
col_1_ferment <- c(452,768,856,192,905,752) #numeric type
col_1_crutch <- c('15','34','56','49','28','37') #character type
col_1_grease <- c(TRUE,TRUE,FALSE,FALSE,TRUE,FALSE) #boolean type
col_1_pump <- as.factor(c("3","6","3","2","1","2")) #factor type
indicator_col <- c(2,NA,2,1,1,2) #numeric type
data1 <- data.frame(col_1_ferment, col_1_crutch, col_1_grease, col_1_pump, indicator_col, check.rows = TRUE)

data2 <- data1 %>% mutate(dplyr::across(starts_with("col_1_"), ~ ifelse(is.na(indicator_col), "", .x)))
w41d8nur

w41d8nur1#

可以使用NA代替""

data2 <- data1 %>% mutate(dplyr::across(starts_with("col_1_"), ~ ifelse(is.na(indicator_col), NA, .x)))

str(data2)

'data.frame':   6 obs. of  5 variables:
 $ col_1_ferment: num  452 NA 856 192 905 752
 $ col_1_crutch : chr  "15" NA "56" "49" ...
 $ col_1_grease : logi  TRUE NA FALSE FALSE TRUE FALSE
 $ col_1_pump   : int  3 NA 3 2 1 2
 $ indicator_col: num  2 NA 2 1 1 2

相关问题