Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
子集dataframe并将项放入R中的新列中_R - Fatal编程技术网

子集dataframe并将项放入R中的新列中

子集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

我的问题有两方面。我想根据不同的值过滤数据帧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一起做的:

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)