【问题标题】:R Create new column of values based on the factor levels of another column [duplicate]R根据另一列的因子水平创建新的值列[重复]
【发布时间】:2020-03-03 13:23:26
【问题描述】:

我正在尝试根据另一列的值创建一个新的值列。如果 iucnStatus 列中的值为“LC”或“NT”,我希望新列(受威胁)中的值为“Not_Threatened”。如果 iucnStatus 中的值为“VU”、“EN”、“CR”、“EW”或“EX”,我希望新列(已威胁)中的值为“已威胁”。我在编写代码以创建新列方面取得了这么大的进展:

df<-read.csv('master2.csv')

df$threatened <-apply(df$iucnStatus, 1,function(x)

但我不确定将什么函数传递给 function(x)。也对不使用 apply 功能的任何其他解决方案开放。

【问题讨论】:

  • 请通过包含您的数据样本(使用dput 命令)使您的问题可重现

标签: r apply


【解决方案1】:

如果您只有两种状态,您可以使用ifelse

df$Threatened <- ifelse(df$iucnStatus %in% c("LC","NT"),"Not_Threatened", "Threatened")
#Without `ifelse`
#df$Threatened <- c("Threatened", "Not_Threatened")[(df$iucnStatus %in% c("LC","NT")+ 1)]

如果还有很多状态码要查看,可以使用case_when

library(dplyr)

df %>%
  mutate(Threatened = case_when(
                        Status %in% c("LC","NT") ~ "Not_Threatened", 
                        Status %in% c("VU", "EN", "CR", "EW","EX") ~ "Threatened", 
                        #More conditions
         ))

【讨论】:

  • 这正是我想要做的,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
相关资源
最近更新 更多