【发布时间】: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/3358272 和stackoverflow.com/q/42637099/3358272。 -
对于更复杂的重新编码,这里已经有很多已回答的问题,例如stackoverflow.com/questions/5372896/recoding-variables-with-r/…
-
@jakub,我认为那里可能有更好的欺骗链接;那个是指重新编码一个数字列,而这个数据是重新编码字符串。
-
@r2evans 是的。我花了一点时间寻找并没有找到一个非常好的。我认为指出
ifelse()和dplyr::recode()可能就足够了。