在 R 中,关于将变量类型更改为 'factor' 的问题
In R , a question about change variable type to 'factor'
我使用下面的代码将变量 'period' 从 'character' 更改为 'factor'(并且因子水平序列与 'period' 文本中包含的顺序相匹配)。
以下是当前代码。有可用的功能吗?
library(tidyverse)
raw_data <-
data.frame(
period=c('Q2','Q1','8','7','40','41'),
amount=c(1:6)
)
arranged_data <- raw_data %>% arrange(match(parse_number(period),c(1:41))) %>%
mutate(period=fct_inorder(period))
> raw_data %>% mutate(period = factor(period)) %>% as_tibble()
# A tibble: 6 × 2
period amount
<fct> <int>
1 Q2 1
2 Q1 2
3 8 3
4 7 4
5 40 5
6 41 6
如您所见,您只需调用向量上的 factor()
函数即可将其转换为因子。
lvls <- unique(raw_data$period)
raw_data$period <- factor(raw_data$period, levels = lvls[order(parse_number(lvls))])
导致:
levels(raw_data$period )
[1] "Q1" "Q2" "7" "8" "40" "41"
我相信这应该有效!问题是 fct_inorder
不会更改列类型,因此您应该先将列转换为因子:
library(tidyverse)
raw_data <-
data.frame(
period=c('Q2','Q1','8','7','40','41'),
amount=c(1:6))
arranged_data <- raw_data %>% arrange(match(parse_number(period), c(1:41))) %>%
mutate(period = as.factor(period)) %>%
mutate(period=fct_inorder(period))
我使用下面的代码将变量 'period' 从 'character' 更改为 'factor'(并且因子水平序列与 'period' 文本中包含的顺序相匹配)。
以下是当前代码。有可用的功能吗?
library(tidyverse)
raw_data <-
data.frame(
period=c('Q2','Q1','8','7','40','41'),
amount=c(1:6)
)
arranged_data <- raw_data %>% arrange(match(parse_number(period),c(1:41))) %>%
mutate(period=fct_inorder(period))
> raw_data %>% mutate(period = factor(period)) %>% as_tibble()
# A tibble: 6 × 2
period amount
<fct> <int>
1 Q2 1
2 Q1 2
3 8 3
4 7 4
5 40 5
6 41 6
如您所见,您只需调用向量上的 factor()
函数即可将其转换为因子。
lvls <- unique(raw_data$period)
raw_data$period <- factor(raw_data$period, levels = lvls[order(parse_number(lvls))])
导致:
levels(raw_data$period )
[1] "Q1" "Q2" "7" "8" "40" "41"
我相信这应该有效!问题是 fct_inorder
不会更改列类型,因此您应该先将列转换为因子:
library(tidyverse)
raw_data <-
data.frame(
period=c('Q2','Q1','8','7','40','41'),
amount=c(1:6))
arranged_data <- raw_data %>% arrange(match(parse_number(period), c(1:41))) %>%
mutate(period = as.factor(period)) %>%
mutate(period=fct_inorder(period))