如何将各州家庭收入中位数的列插入到 R 中的现有数据框中? "Stack overflow Error"

How to insert a column with median household income by states to the existing dataframe in R? "Stack overflow Error"

我下载了美国公民的数据框。它有一个“州”列,为每个观察结果提供美国某个州的名称。

我需要将各州的家庭收入中位数添加到来自外部来源的分析中。我是 R 的新生,所以我是手动做的,就像这样:

(1) 首先,我创建了一个 HH 平均收入值向量

hincome <- (c(42.8, 72.2, 48.5, ......... )) 

(2) 我做了一个循环,它应该在数据中创建一个新变量,其中分配了与每个州对应的 HH 中位数收入值。

data$hincome <- (ifelse(data$State == "Alabama", 42.8,
            ifelse(data$State == "Alaska", 72.2,
            ifelse(data$State == "Arizona", 48.5,
            ............ ))))

显然这段代码有大约 56 行,我得到一个错误:

"Ошибка: переполнение стека целых чисел на строке 50" (for russian users)
"Error: stack overflow of integers on line 50"

我试过 debug() 和 browse() 来消除它,但没有用。也许还有另一种方法可以消除错误。或者我应该以某种方式将向量插入到数据中作为新列,以便 HH 收入中值与状态列相对应?

极深的嵌套会导致问题。有几种选择 - merge() 或 qdread 建议的连接,dplyr::case_when 如果你的条件更复杂,switch() 也可以工作......

假设您的 hincome 向量按州的字母顺序排列,并且您拥有美国所有 50 个州,我们可以使用内置的 state.name 对象来创建查找 table 和然后合并:

lookup_data = data.frame(hincome, State = state.name)
data = merge(data, lookup_data, by = "State", all.x = TRUE)