子集dataframe并将项放入R中的新列中
我的问题有两方面。我想根据不同的值过滤数据帧df中的一列。我的专栏包括许多不同的汽车类型。例如,如果我正在寻找一辆宝马3erReihe,我也想包括宝马3erReihe;3161轿车子集dataframe并将项放入R中的新列中,r,R,我的问题有两方面。我想根据不同的值过滤数据帧df中的一列。我的专栏包括许多不同的汽车类型。例如,如果我正在寻找一辆宝马3erReihe,我也想包括宝马3erReihe;3161轿车 Example dataset: Item Brand Type 1 BMW 3er Reihe 2 BMW 3er Reihe; 3161 SEDAN 3 Audi A1 4 Audi A3 我是和grep一起做的: carsegme
Example dataset:
Item Brand Type
1 BMW 3er Reihe
2 BMW 3er Reihe; 3161 SEDAN
3 Audi A1
4 Audi A3
我是和grep一起做的:
carsegmentC <- df[grep("3er Reihe|A3", df$Type), ]
这似乎对grep不起作用,我也尝试过其他方法,比如复制列,但不起作用。希望任何人都能帮忙,我将不胜感激
可复制示例:
df <- data.frame(Item = c(1,2,3,4), Brand=c("BMW", "BMW", "Audi", "Audi"), Type=c("3er Reihe", "3er Reihe;3161 SEDAN ", "A1", "A3"))
df将模式放在列表中,循环模式,应用grepl
获取逻辑索引,用ifelse
将其包装,以返回”
中的假值,并将其分配给“df”中的新列
df[c("CarsegmentC", "CarsegmentB")] <- lapply(list("3er Reihe|A3", "A1"),
function(pat) ifelse(grepl(pat, df$Type), df$Type, ""))
df
# Item Brand Type CarsegmentC CarsegmentB
#1 1 BMW 3er Reihe 3er Reihe
#2 2 BMW 3er Reihe;3161 SEDAN 3er Reihe;3161 SEDAN
#3 3 Audi A1 A1
#4 4 Audi A3 A3
df[c(“CarsegmentC”、“CarsegmentB”)]
df[c("CarsegmentC", "CarsegmentB")] <- lapply(list("3er Reihe|A3", "A1"),
function(pat) ifelse(grepl(pat, df$Type), df$Type, ""))
df
# Item Brand Type CarsegmentC CarsegmentB
#1 1 BMW 3er Reihe 3er Reihe
#2 2 BMW 3er Reihe;3161 SEDAN 3er Reihe;3161 SEDAN
#3 3 Audi A1 A1
#4 4 Audi A3 A3
df <- data.frame(Item = c(1,2,3,4), Brand=c("BMW", "BMW", "Audi",
"Audi"), Type=c("3er Reihe", "3er Reihe;3161 SEDAN", "A1", "A3"),
stringsAsFactors=FALSE)