此处的申请是将美国各州划分为地区。
group1 <- c("ME", "NH", "VT", "MA", "CT", "RI")
group2 <- c("FL", "GA", "AL", "MS", "LA")
我的数据如下:
SomeVar | State
---------------
300 | AL
331 | GA
103 | MA
500 | FL
我想根据上面的分组在数据中添加一个“区域”列,如下所示:
SomeVar | State | Region
------------------------
300 | AL | 2
331 | GA | 2
103 | MA | 1
500 | FL | 2
是否有直接的方法根据分组分配因子?
答案 0 :(得分:3)
group1 <- c("ME", "NH", "VT", "MA", "CT", "RI")
group2 <- c("FL", "GA", "AL", "MS", "LA")
grouptab <- rbind(data.frame(State=group1,grp=1),
data.frame(State=group2,grp=2))
DF <- read.table(text="SomeVar State
300 AL
331 GA
103 MA
500 FL",header=TRUE)
merge(DF,grouptab)
或更一般地说:
groupList <- list(group1,group2)
grouptab <- data.frame(State=unlist(groupList),
grp=rep(seq_along(groupList),
sapply(groupList,length)))
(可能有其他方法可以做到这一点 - 我尝试了mapply
但是无法快速解决这个问题。
我认为merge
的适当参数(例如all
,all.x
,all.y
)会以各种方式处理失踪组案件。
答案 1 :(得分:1)
group1 <- c("ME", "NH", "VT", "MA", "CT", "RI")
group2 <- c("FL", "GA", "AL", "MS", "LA")
DF <- read.table(text="SomeVar State
300 AL
331 GA
103 MA
500 FL",header=TRUE)
DF$Region <- NA
DF$Region[DF$State %in% group1] <- 1
DF$Region[DF$State %in% group2] <- 2
# SomeVar State Region
# 1 300 AL 2
# 2 331 GA 2
# 3 103 MA 1
# 4 500 FL 2
答案 2 :(得分:1)
假设您的数据框名为df
并且所有状态都在第1组或第2组中,您可以执行
df$region <- ifelse(df$state %in% group1, 1, 2)