我有下面的矩阵和向量
data=data.frame(var1=c("jup", "far", "part", "part;melt", "rat", "rat;art", "kir;door;art"), var2=c("0","8","5","7;8","3","9;4","6;5;9"))
vec1=c("bato", "kir", "door", "part", "zat", "melt", "art")
> data
var1 var2
1 jup 0
2 far 8
3 part 5
4 part;melt 7;8
5 rat 3
6 rat;art 9;4
7 kir;door;art 6;5;9
字符串
我想创建第三和第四个变量,其中包含var 1和var 2的值,如果var 1包含存储在vec 1中的值。我只能在var 1中只有一个值时这样做,但不知道如何管理包含两个或更多值的情况。
例如,对于“部分; melt”我想得到“part;melt”和“7;8”,对于“rat;art”我想得到“art”和“4”,对于“kir;door;art”我想得到“kir;door;art”和“6;5;9”
我会感激任何帮助
data_output = data %>%
mutate(var1b=ifelse(var1 %in% vec1, var1, NA)) %>%
mutate(var2b=ifelse(var1 %in% vec1, var2, NA)) %>%
> data_output
var1 var2 var1b var2b
1 jup 0 <NA> <NA>
2 far 8 <NA> <NA>
3 part 5 part 5
4 part;melt 7;8 part;melt 7;8
5 rat 3 <NA> <NA>
6 rat;art 9;4 art 4
7 kir;door;art 6;5;9 kir;dor;art 6;5;9
2条答案
按热度按时间zz2j4svz1#
您可以将分号分隔的数据拆分为更长的格式,并使用
ifelse
获取相应的值。字符串
ql3eal8s2#
你可以做
字符串