R:使用其他变量的值创建新变量



我正在处理一个数据集,我需要创建一个新的变量(basic_adj),并填充它与另一个变量(employment_adj)的内容,同时满足一组条件(indcode>= 2400, indcode <3100年).

数据集:

basic_adj240129.229.2309031.231.2

有几种方法可以在base r中做到这一点。您尝试的两个问题是(a),ifelse函数需要3个参数-如果语句为真和假,您需要指定函数应该返回什么。(b)你需要以某种方式遍历incode vector的每个元素。

例如,使用transform:

indcode <- c(2401, 3090, 5200)
employment_adj <- c(29.2,31.2,12.4)   
df <- data.frame(indcode, employment_adj)
df <- transform(df, basic_adj = ifelse(indcode >= 2400 & indcode < 3100, 1, 0))

或者你可以通过"向量的每个元素使用sapply

df$basic_adj = sapply(1:nrow(df), function(i) ifelse(df$indcode[i] >= 2400 & df$indcode[i] < 3100, 1, 0))

大多数R用户使用dplyrdata.table包进行大量这些类型的转换,以使处理数据帧更快/更容易。下面是你如何在data.table中做到这一点:

library(data.table)
indcode <- c(2401, 3090, 5200)
employment_adj <- c(29.2,31.2,12.4)   
df <- data.frame(indcode, employment_adj)
dat <- as.data.table(df)

dat[, basic_adj := ifelse(indcode >= 2400 & indcode < 3100, 1, 0)]

> dat
indcode employment_adj basic_adj
1:    2401           29.2         1
2:    3090           31.2         1
3:    5200           12.4         0

如果你要做大量的数据处理,那么花时间学习其中一个包是值得的。

最新更新