【问题标题】:Creating a new categorical column in a data frame using numerical values from that same data frame?使用同一数据框中的数值在数据框中创建新的分类列?
【发布时间】:2021-05-19 17:43:46
【问题描述】:
我正在尝试根据 4 个不同数值列中的最高数字为我的数据框中的每个观察值分配一个分类值。
我正在处理所有 FIFA 足球运动员的名单,例如,如果他们的最高评分是他们的射门数据,那么他们就是进攻者,如果防守最高,那么就是防守者,你就明白了。
【问题讨论】:
-
See here 关于制作一个更易于人们帮助的可重现示例,包括数据示例和您已经在处理的代码
标签:
r
dataframe
categorical-data
【解决方案1】:
library(tibble)
library(dplyr)
df <- tibble(
player = c("Ronaldo", "Messi", "Neymar", "Dibala"),
Shooting = c(24,54,23,44),
Defending = c(66,55,44,35)
)
df <- df %>%
mutate(role = ifelse(Shooting > Defending, "Attacker", "Defender"))
df
你的意思是这样的吗?
【解决方案2】:
我们可以使用case_when
library(dplyr)
df %>%
mutate(role = Shooting > Defending ~ "Attacker", TRUE ~ "Defender"))
或者另一个选项是max.col
df$role <- c("Attacker", "Defender")[max.col(df[c("Shooting",
"Defending")], 'first')]