我需要一些整理数据的帮助。我正在尝试将一些整数转换为因数(但不是将所有整数转换为因数)。我认为我可以选择有问题的变量,但是如何将它们添加回原始数据集中?例如,保持未从raw_data_tbl中选择的值,并使用raw_data_tbl_int中的变异类型 enter image description here
library(dplyr)
raw_data_tbl %>%
select_if(is.numeric) %>%
select(-c(contains("units"), PRO_ALLOW, RTL_ACTUAL, REAL_PRICE,
REAL_PRICE_HHU, REBATE, RETURN_UNITS, UNITS_PER_CASE, Profit, STR_COST, DCC,
CREDIT_AMT)) %>%
mutate_if(is.numeric, as.factor)
答案 0 :(得分:3)
自CRAN 2020-06-01上发布的dplyr 1.0.0起,由于更具通用性的{{1},作用域函数mutate_at()
,mutate_if()
和mutate_all()
已被取代}。这意味着您可以只待across()
。 The introductory blog post from April解释了为什么花这么长时间才发现。
玩具示例:
mutate()
对于您而言,您可以这样做:
library(dplyr)
iris %>%
mutate(across(c(Sepal.Width,
Sepal.Length),
factor))
答案 1 :(得分:2)
您可以改用mutate_at
。这是使用iris
数据框的示例:
library(dplyr)
iris_factor <- iris %>%
mutate_at(vars(Sepal.Width,
Sepal.Length),
funs(factor))
以及证明:
> str(iris_factor)
'data.frame': 150 obs. of 5 variables:
$ Sepal.Length: Factor w/ 35 levels "4.3","4.4","4.5",..: 9 7 5 4 8 12 4 8 2 7 ...
$ Sepal.Width : Factor w/ 23 levels "2","2.2","2.3",..: 15 10 12 11 16 19 14 14 9 11 ...
$ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
$ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
$ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
答案 2 :(得分:1)
老实说,我会这样:
library(dplyr)
df = data.frame("LOC_ID" = c(1,2,3,4),
"STRS" = c("a","b","c","d"),
"UPC_CDE" = c(813,814,815,816))
df$LOC_ID = as.factor(df$LOC_ID)
df$UPC_CDE = as.factor(df$UPC_CDE)