【问题标题】:Assigning new column values based on other columns根据其他列分配新的列值
【发布时间】:2022-11-16 07:26:04
【问题描述】:

我正在尝试根据数据中的其他国家/地区在我的数据集中创建一个新列,但在正确编写代码时遇到了一些问题。如果有人介意快速浏览一下并为我指明正确的方向,那就太好了。

我已经创建了我需要拆分的国家以保存在下面写出来

east_countries = c("Albania", "Bosnia and Herzegovina", "Croatia", "Cyprus", "Egypt, Arab Rep.",  "Greece", "Israel", "Lebanon", "Libya",
                              "Montenegro", "Slovenia", "Syrian Arab Republic", "Turkiye")
west_countries = c("Algeria", "France", "Italy", "Malta", "Morocco", "Spain", "Tunisia") 

if(fisheries_df$Country_Name %in% east_countries){
  fisheries_df$basin = "east"
} 
if(fisheries_df$Country_Name %in% west_countries){
  fisheries_df$basin = "west"
} 

我虽然上面的方法可行,但我可能缺少 IF 语句中的位置。我也尝试了类似下面的方法,但还是没有运气。不用挑剔那里使用哪种方法

数据片段

Country_Name year   fisheries_production 
Albania      1997                1111.    
France      1997                 2808.     
Greece      1997                 3058.     

fisheries_df[which(fisheries_df$Country_Name %in% west_countries),]=fisheries_df$basin="west"

【问题讨论】:

    标签: r


    【解决方案1】:

    你可以使用dplyr::case_when

    fisheries_df$basin <- dplyr::case_when(
      fisheries_df$Country_Name %in% east_countries ~ "east",
      fisheries_df$Country_Name %in% west_countries ~ "west",
      TRUE ~ NA_character_
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-16
      • 1970-01-01
      • 2020-05-23
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      • 2022-12-05
      • 2021-10-19
      相关资源
      最近更新 更多