【问题标题】:Recode data in an R dataframe column重新编码 R 数据框列中的数据
【发布时间】:2021-11-12 21:40:55
【问题描述】:

我有一个包含两列的 df:数据和位置,其中: 数据是进球数(1-10) 而 position 是所踢的位置(守门员、后卫、前锋)

我想在df中添加一个新列,如果位置为“前锋”,则新列中的行表示“好”,否则,如果它是“守门员”或“防守”,则为新列中的行说“坏” 例如。

data position new.column
5 goalie bad
6 forward good
9 defence bad
5 forward good

【问题讨论】:

  • df$new.column <- ifelse(df$position == "forward", "good", "bad")。或者反过来(可能对其他需求提供信息):ifelse(df$position %in% c("goalie","defence"), "bad", "good")。有关==-vs-%in% 的讨论,请参阅stackoverflow.com/q/15358006/3358272stackoverflow.com/q/42637099/3358272
  • 对于更复杂的重新编码,这里已经有很多已回答的问题,例如stackoverflow.com/questions/5372896/recoding-variables-with-r/…
  • @jakub,我认为那里可能有更好的欺骗链接;那个是指重新编码一个数字列,而这个数据是重新编码字符串。
  • @r2evans 是的。我花了一点时间寻找并没有找到一个非常好的。我认为指出 ifelse()dplyr::recode() 可能就足够了。

标签: r dataframe recode


【解决方案1】:
library(tidyverse)
df <- data.frame(data = c(5, 6, 9, 5), 
                 position = c('goalie', 'forward', 'defense', 'forward')) %>% 
mutate(new.column = case_when(
  position == 'forward' ~'good', 
  TRUE ~'bad'
))

【讨论】:

    猜你喜欢
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多