首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数值赋值给因子列

将数值赋值给因子列
EN

Stack Overflow用户
提问于 2020-05-06 03:40:52
回答 2查看 685关注 0票数 0

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

我正在寻找转换因素为水平的数字数据。

因此,普罗克斯专栏会写到:远,远,近,远,远。

我想给这些因素赋值,其中距离是1,近是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))

导致了钠蓝子。

我已经尝试过为这些因素设置级别,但这并没有分配数字值。我需要用这个水平的数值作为序数模型。如果你有什么建议,请告诉我。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-06 04:11:43

R基解决方案:

代码语言:javascript
复制
Prox_df$Prox <- as.integer(as.factor(Prox_df$Prox))

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

代码语言:javascript
复制
Prox_df <- data.frame(Prox = c("Far", "Far", "Near", "On", "Far", "Near", "Far", "Far", "Near", "Far"), 
                      stringsAsFactors = FALSE)
票数 1
EN

Stack Overflow用户

发布于 2020-05-06 03:50:14

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

数据:

代码语言:javascript
复制
Prox_df <- data.frame(Prox = c("Far", "Far", "Near", "On", "Far", "Near", "Far", "Far", "Near", "Far"), 
                      stringsAsFactors = FALSE)

dplyr::case_when

代码语言:javascript
复制
Prox_df <- Prox_df %>%
  mutate(Prox_df = case_when(Prox == "Far" ~ 1,
                             Prox == "Near" ~ 2,
                             Prox == "On" ~ 3))

dplyr::recode

代码语言:javascript
复制
Prox_df <- Prox_df %>%
  mutate(Prox_df = recode(Prox, "Far" = 1, "Near" = 2, On = 3))

base::factor

代码语言:javascript
复制
Prox_df <- Prox_df %>%
  mutate(Prox_df = factor(Prox, levels = c("Far", "Near", "On"), labels = 1:3, ordered = TRUE))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61627002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档