簡體   English   中英

基於 2 個外部向量識別行

[英]Identify rows based on 2 external vectors

我正在嘗試標記具有與 2 個外部向量中的元素匹配的值的行。 我需要這些值來匹配,這意味着它不可能是任何情況,而是滿足兩個條件的情況(即不使用 %in% 運算符)。

這是我嘗試過的:

widths <- c(1.2, 1.7, 1.8, 1.8, 1.9)
species <- c(rep("versicolor", 3), rep("virginica", 2))

iris_flagged <- iris %>%
  filter(Species != "setosa") %>%
  mutate(flag = ifelse((Petal.Width == widths & Species == species), "check", "")) %>%
  arrange(Species, Petal.Width) #to help with visualization

但是當我運行這個時,一些標志被遺漏了。 如果查看數據,您會看到第 14、50、57、59、61:64 和 66:71 行缺少標志。

一個笨重的、非健壯的方法可能看起來像這樣,但我真的想讓它健壯並利用這些向量來發揮我的優勢。

iris_flagged2 <- iris %>%
  filter(Species != "setosa") %>%
  mutate(flag = ifelse((Species == "versicolor" & Petal.Width == 1.2 |
                          Species == "versicolor" & Petal.Width == 1.7 |
                          Species == "versicolor" & Petal.Width == 1.8 |
                          Species == "virginica" & Petal.Width == 1.8 |
                          Species == "virginica" & Petal.Width == 1.9), 
                       "check", "")) %>%
  arrange(Species, Petal.Width) 

謝謝你的幫助。 我試圖搜索,但不知道如何表達我的問題。

除了@akrun 的評論之外,這里是您任務的可能解決方案:

library(dplyr)
iris %>% 
  mutate(across(-Species, ~round(.,1)),
         flag = ifelse(Petal.Width %in% widths &
                         Species %in% species, "check",""))

輸出:

    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species  flag
1            5.1         3.5          1.4         0.2     setosa      
2            4.9         3.0          1.4         0.2     setosa      
3            4.7         3.2          1.3         0.2     setosa      
4            4.6         3.1          1.5         0.2     setosa      
5            5.0         3.6          1.4         0.2     setosa      
6            5.4         3.9          1.7         0.4     setosa      
7            4.6         3.4          1.4         0.3     setosa      
8            5.0         3.4          1.5         0.2     setosa      
9            4.4         2.9          1.4         0.2     setosa      
10           4.9         3.1          1.5         0.1     setosa      
11           5.4         3.7          1.5         0.2     setosa      
12           4.8         3.4          1.6         0.2     setosa      
13           4.8         3.0          1.4         0.1     setosa      
14           4.3         3.0          1.1         0.1     setosa      
15           5.8         4.0          1.2         0.2     setosa      
16           5.7         4.4          1.5         0.4     setosa      
17           5.4         3.9          1.3         0.4     setosa      
18           5.1         3.5          1.4         0.3     setosa      
19           5.7         3.8          1.7         0.3     setosa      
20           5.1         3.8          1.5         0.3     setosa      
21           5.4         3.4          1.7         0.2     setosa      
22           5.1         3.7          1.5         0.4     setosa      
23           4.6         3.6          1.0         0.2     setosa      
24           5.1         3.3          1.7         0.5     setosa      
25           4.8         3.4          1.9         0.2     setosa      
26           5.0         3.0          1.6         0.2     setosa      
27           5.0         3.4          1.6         0.4     setosa      
28           5.2         3.5          1.5         0.2     setosa      
29           5.2         3.4          1.4         0.2     setosa      
30           4.7         3.2          1.6         0.2     setosa      
31           4.8         3.1          1.6         0.2     setosa      
32           5.4         3.4          1.5         0.4     setosa      
33           5.2         4.1          1.5         0.1     setosa      
34           5.5         4.2          1.4         0.2     setosa      
35           4.9         3.1          1.5         0.2     setosa      
36           5.0         3.2          1.2         0.2     setosa      
37           5.5         3.5          1.3         0.2     setosa      
38           4.9         3.6          1.4         0.1     setosa      
39           4.4         3.0          1.3         0.2     setosa      
40           5.1         3.4          1.5         0.2     setosa      
41           5.0         3.5          1.3         0.3     setosa      
42           4.5         2.3          1.3         0.3     setosa      
43           4.4         3.2          1.3         0.2     setosa      
44           5.0         3.5          1.6         0.6     setosa      
45           5.1         3.8          1.9         0.4     setosa      
46           4.8         3.0          1.4         0.3     setosa      
47           5.1         3.8          1.6         0.2     setosa      
48           4.6         3.2          1.4         0.2     setosa      
49           5.3         3.7          1.5         0.2     setosa      
50           5.0         3.3          1.4         0.2     setosa      
51           7.0         3.2          4.7         1.4 versicolor      
52           6.4         3.2          4.5         1.5 versicolor      
53           6.9         3.1          4.9         1.5 versicolor      
54           5.5         2.3          4.0         1.3 versicolor      
55           6.5         2.8          4.6         1.5 versicolor      
56           5.7         2.8          4.5         1.3 versicolor      
57           6.3         3.3          4.7         1.6 versicolor      
58           4.9         2.4          3.3         1.0 versicolor      
59           6.6         2.9          4.6         1.3 versicolor      
60           5.2         2.7          3.9         1.4 versicolor      
61           5.0         2.0          3.5         1.0 versicolor      
62           5.9         3.0          4.2         1.5 versicolor      
63           6.0         2.2          4.0         1.0 versicolor      
64           6.1         2.9          4.7         1.4 versicolor      
65           5.6         2.9          3.6         1.3 versicolor      
66           6.7         3.1          4.4         1.4 versicolor      
67           5.6         3.0          4.5         1.5 versicolor      
68           5.8         2.7          4.1         1.0 versicolor      
69           6.2         2.2          4.5         1.5 versicolor      
70           5.6         2.5          3.9         1.1 versicolor      
71           5.9         3.2          4.8         1.8 versicolor check
72           6.1         2.8          4.0         1.3 versicolor      
73           6.3         2.5          4.9         1.5 versicolor      
74           6.1         2.8          4.7         1.2 versicolor check
75           6.4         2.9          4.3         1.3 versicolor      
76           6.6         3.0          4.4         1.4 versicolor      
77           6.8         2.8          4.8         1.4 versicolor      
78           6.7         3.0          5.0         1.7 versicolor check
79           6.0         2.9          4.5         1.5 versicolor      
80           5.7         2.6          3.5         1.0 versicolor      
81           5.5         2.4          3.8         1.1 versicolor      
82           5.5         2.4          3.7         1.0 versicolor      
83           5.8         2.7          3.9         1.2 versicolor check
84           6.0         2.7          5.1         1.6 versicolor      
85           5.4         3.0          4.5         1.5 versicolor      
86           6.0         3.4          4.5         1.6 versicolor      
87           6.7         3.1          4.7         1.5 versicolor      
88           6.3         2.3          4.4         1.3 versicolor      
89           5.6         3.0          4.1         1.3 versicolor      
90           5.5         2.5          4.0         1.3 versicolor      
91           5.5         2.6          4.4         1.2 versicolor check
92           6.1         3.0          4.6         1.4 versicolor      
93           5.8         2.6          4.0         1.2 versicolor check
94           5.0         2.3          3.3         1.0 versicolor      
95           5.6         2.7          4.2         1.3 versicolor      
96           5.7         3.0          4.2         1.2 versicolor check
97           5.7         2.9          4.2         1.3 versicolor      
98           6.2         2.9          4.3         1.3 versicolor      
99           5.1         2.5          3.0         1.1 versicolor      
100          5.7         2.8          4.1         1.3 versicolor      
101          6.3         3.3          6.0         2.5  virginica      
102          5.8         2.7          5.1         1.9  virginica check
103          7.1         3.0          5.9         2.1  virginica      
104          6.3         2.9          5.6         1.8  virginica check
105          6.5         3.0          5.8         2.2  virginica      
106          7.6         3.0          6.6         2.1  virginica      
107          4.9         2.5          4.5         1.7  virginica check
108          7.3         2.9          6.3         1.8  virginica check
109          6.7         2.5          5.8         1.8  virginica check
110          7.2         3.6          6.1         2.5  virginica      
111          6.5         3.2          5.1         2.0  virginica      
112          6.4         2.7          5.3         1.9  virginica check
113          6.8         3.0          5.5         2.1  virginica      
114          5.7         2.5          5.0         2.0  virginica      
115          5.8         2.8          5.1         2.4  virginica      
116          6.4         3.2          5.3         2.3  virginica      
117          6.5         3.0          5.5         1.8  virginica check
118          7.7         3.8          6.7         2.2  virginica      
119          7.7         2.6          6.9         2.3  virginica      
120          6.0         2.2          5.0         1.5  virginica      
121          6.9         3.2          5.7         2.3  virginica      
122          5.6         2.8          4.9         2.0  virginica      
123          7.7         2.8          6.7         2.0  virginica      
124          6.3         2.7          4.9         1.8  virginica check
125          6.7         3.3          5.7         2.1  virginica      
126          7.2         3.2          6.0         1.8  virginica check
127          6.2         2.8          4.8         1.8  virginica check
128          6.1         3.0          4.9         1.8  virginica check
129          6.4         2.8          5.6         2.1  virginica      
130          7.2         3.0          5.8         1.6  virginica      
131          7.4         2.8          6.1         1.9  virginica check
132          7.9         3.8          6.4         2.0  virginica      
133          6.4         2.8          5.6         2.2  virginica      
134          6.3         2.8          5.1         1.5  virginica      
135          6.1         2.6          5.6         1.4  virginica      
136          7.7         3.0          6.1         2.3  virginica      
137          6.3         3.4          5.6         2.4  virginica      
138          6.4         3.1          5.5         1.8  virginica check
139          6.0         3.0          4.8         1.8  virginica check
140          6.9         3.1          5.4         2.1  virginica      
141          6.7         3.1          5.6         2.4  virginica      
142          6.9         3.1          5.1         2.3  virginica      
143          5.8         2.7          5.1         1.9  virginica check
144          6.8         3.2          5.9         2.3  virginica      
145          6.7         3.3          5.7         2.5  virginica      
146          6.7         3.0          5.2         2.3  virginica      
147          6.3         2.5          5.0         1.9  virginica check
148          6.5         3.0          5.2         2.0  virginica      
149          6.2         3.4          5.4         2.3  virginica      
150          5.9         3.0          5.1         1.8  virginica check

下面是使用的一種方式map2通過每個對條件和reduce將它們組合成一個。

library(tidyverse)

iris2 <- iris %>% filter(Species != "setosa") 

iris2 <- iris2 %>%
  mutate(flag = ifelse(map2(species, widths, 
              ~Species == .x & Petal.Width == .y) %>% reduce(`|`), 'check', ''))

iris2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM