如何将各州家庭收入中位数的列插入到 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)
我下载了美国公民的数据框。它有一个“州”列,为每个观察结果提供美国某个州的名称。
我需要将各州的家庭收入中位数添加到来自外部来源的分析中。我是 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)