簡體   English   中英

根據 R 中另一個變量中的特定值為新變量賦值

[英]Assigning Value to New Variable Based on Specific Values in Another Variable in R

我有一個包含 state 名稱的 data.frame,我想創建一個名為“region”的新變量,其中根據“state”變量下的 state 分配一個值。

例如,如果 state 變量具有“Alabama”或“Georgia”,我希望將“Region”分配為“South”。 如果 state 是“華盛頓”或“加利福尼亞”,我希望將其分配給“西部”。 我必須為美國 48 個相鄰的州中的每一個州都這樣做,而且我很難找出最好的方法來做到這一點。 在這個(我確信很簡單)過程中的任何幫助都會很棒。 我最終要尋找的是這樣的東西:

State      Region
Wyoming    West
Michigan   Midwest
Alabama    South
Georgia    South
California West
Texas      Central

需要明確的是,我沒有將區域放在單獨的文件中,我必須將其創建為新變量並自己創建區域名稱。 我只是在尋找一種方法,使代碼可以通過我擁有的所有 3000 行代碼 go 並且一旦我告訴它如何分配區域名稱就可以自動分配區域名稱。

您可以使用“數據集”package 中的內置“state.name”和“state.region”變量,而不是為每個 state 鍵入區域(如 Jon Z38008DD81C2F4D7985ECF6E0CE8 中建議的)

library(tidyverse)
library(datasets)

state_lookup_table <- data.frame(name = state.name,
                                 region = state.region)

my_df <- data.frame(place = c("Washington", "California"),
                    value = c(1000, 2000))
my_df
#>        place value
#> 1 Washington  1000
#> 2 California  2000

my_df %>%
  left_join(state_lookup_table, by = c("place" = "name"))
#>        place value region
#> 1 Washington  1000   West
#> 2 California  2000   West

代表 package (v2.0.1) 於 2022 年 9 月 2 日創建

我會這樣 go :

df <- data.frame(name = c("john", "will", "thomas", "Ali"),
                 state = c("California", "Alabama", "Washington", "Georgia"))

region_df <- data.frame(state= c("Alabama", "Georgia", "Washington"),
                        region = c("south", "south", "west"))

merged.df <- merge(df, region_df, all.x = TRUE, on= "state")

我認為您需要參考才能這樣做。 對於您的具體問題,dict 將是最好的解決方案。

ref_ge <- {}
ref_ge["Georgia"]="South"
ref_ge["Alabama"]="South"
ref_ge["California"]="West"
ref1["Georgia"]

#Or, if you could read the state->region information from an excel to a dataframe
df=data.frame(state=c("Georgia","Alabama","California"),region=c("South","South","West"))
ref2 <- df$region
names(ref2) <- df$state
ref2["Georgia"]


暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM