为系数列分配数值

问题描述 投票:0回答:1

我在一个月前发布了这个问题,更新了R和Rstudio之后,我现在遇到了同样的问题。

我希望将因子转换为水平的数字数据。

所以Prox的一列会读作 Far, Far, Near, On, Far, Near, Far, Far, Near, Far.

我想给这些因子分配数值,其中Far是1,Near是2,On是3。

使用下面这些代码中的任何一个

levels(Prox) levels(Prox) <- c(1, 2, 3)

Prox_df <- Prox_df %>% mutate(Prox_df = case_when(Prox == "Far" ~ 3, Prox == "Near" ~ 2, Prox == "On" ~ 1))

导致NA胁迫。

我试着给这些因素设置水平,但这并没有分配数值。我需要将这个水平的数值用于一个序数模型。如果您有任何建议,请告诉我。谢谢您。

r
1个回答
1
投票

基础R解决方案。

Prox_df$Prox <- as.integer(as.factor(Prox_df$Prox))

使用@HNSKD的数据(谢谢)。

Prox_df <- data.frame(Prox = c("Far", "Far", "Near", "On", "Far", "Near", "Far", "Far", "Near", "Far"), 
                      stringsAsFactors = FALSE)

2
投票

The dplyr::case_when 应该可以正常工作。

数据。

Prox_df <- data.frame(Prox = c("Far", "Far", "Near", "On", "Far", "Near", "Far", "Far", "Near", "Far"), 
                      stringsAsFactors = FALSE)

dplyr::case_when

Prox_df <- Prox_df %>%
  mutate(Prox_df = case_when(Prox == "Far" ~ 1,
                             Prox == "Near" ~ 2,
                             Prox == "On" ~ 3))

dplyr::重新编码

Prox_df <- Prox_df %>%
  mutate(Prox_df = recode(Prox, "Far" = 1, "Near" = 2, On = 3))

基数::因子

Prox_df <- Prox_df %>%
  mutate(Prox_df = factor(Prox, levels = c("Far", "Near", "On"), labels = 1:3, ordered = TRUE))
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.