R 对mutate中具有类似模式的列的引用
我有很多专栏,像pr_1,pr_2,pr_3,。。。。我想在R 对mutate中具有类似模式的列的引用,r,pattern-matching,mutate,R,Pattern Matching,Mutate,我有很多专栏,像pr_1,pr_2,pr_3,。。。。我想在mutate中用ifelse 使用它们相似的模式(或索引),而不是像下面那样写入所有列名 df<- data.frame(p=c(1,2,3), pr_1=c(1,4,5), pr_2=c(0,1,6), pr_3=c(0,1,4)) df <- df %>% mutate(green=(ifelse(p < pr_1 | p < pr_2 | p < pr_3, 0 , 1))) df1)c
mutate
中用ifelse
使用它们相似的模式(或索引),而不是像下面那样写入所有列名
df<- data.frame(p=c(1,2,3), pr_1=c(1,4,5), pr_2=c(0,1,6), pr_3=c(0,1,4))
df <- df %>%
mutate(green=(ifelse(p < pr_1 | p < pr_2 | p < pr_3, 0 , 1)))
df1)cur_数据在dplyr 1.0中,我们可以使用cur_数据()
在rowwise
中引用当前行。(如果只有p列,而pr列和p列排在第一位,我们可以交替使用cur_data()[-1]
替换select
)
3)c_跨我们也可以使用dplyr 1.0c_跨
。我们已经演示了如何使用if_else
,但是我们可以使用+!任何(…)
如上所述
df %>%
rowwise %>%
mutate(green = if_else(any(p < c_across(starts_with("pr"))), 0, 1)) %>%
ungroup
df%>%
行%>%
突变(绿色=if_else(任何(p%
解组
给予:
# A tibble: 3 x 5
p pr_1 pr_2 pr_3 green
<dbl> <dbl> <dbl> <dbl> <int>
1 1 1 0 0 1
2 2 4 1 1 0
3 3 5 6 4 0
p pr_1 pr_2 pr_3 green
1 1 1 0 0 1
2 2 4 1 1 0
3 3 5 6 4 0
# A tibble: 3 x 5
p pr_1 pr_2 pr_3 green
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1 1 0 0 1
2 2 4 1 1 0
3 3 5 6 4 0
#一个tible:3 x 5
p pr_1 pr_2 pr_3绿色
1 1 1 0 0 1
2 2 4 1 1 0
3 3 5 6 4 0
1)cur_数据在dplyr 1.0中,我们可以使用cur_数据()
在行方向
中引用当前行。(如果只有p列,而pr列和p列排在第一位,我们可以交替使用cur_data()[-1]
替换select
)
3)c_跨我们也可以使用dplyr 1.0c_跨
。我们已经演示了如何使用if_else
,但是我们可以使用+!任何(…)
如上所述
df %>%
rowwise %>%
mutate(green = if_else(any(p < c_across(starts_with("pr"))), 0, 1)) %>%
ungroup
df%>%
行%>%
突变(绿色=if_else(任何(p%
解组
给予:
# A tibble: 3 x 5
p pr_1 pr_2 pr_3 green
<dbl> <dbl> <dbl> <dbl> <int>
1 1 1 0 0 1
2 2 4 1 1 0
3 3 5 6 4 0
p pr_1 pr_2 pr_3 green
1 1 1 0 0 1
2 2 4 1 1 0
3 3 5 6 4 0
# A tibble: 3 x 5
p pr_1 pr_2 pr_3 green
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1 1 0 0 1
2 2 4 1 1 0
3 3 5 6 4 0
#一个tible:3 x 5
p pr_1 pr_2 pr_3绿色
1 1 1 0 0 1
2 2 4 1 1 0
3 3 5 6 4 0
在R基中,您可以选择带有grep
的列,将它们与p
列进行比较,并使用行和
cols <- grep('pr', names(df))
df$green <- +(rowSums(df$p < df[cols]) == 0)
cols在以R为底的列中,您可以选择带有grep
的列,将它们与p
列进行比较,并使用行和
cols <- grep('pr', names(df))
df$green <- +(rowSums(df$p < df[cols]) == 0)
cols谢谢!在第一个解决方案中,cur\u data
需要什么包?有没有办法在第一个解决方案中用除0和1以外的数字定义绿色变量?使用cur_data()需要dplyr 1.0或更高版本。这个版本现在应该在CRAN上。使用if_else(any(…),…)返回0和1以外的结果。请参阅(3)我们在哪里使用该样式。谢谢!在第一个解决方案中,cur\u data
需要什么包?有没有办法在第一个解决方案中用除0和1以外的数字定义绿色变量?使用cur_data()需要dplyr 1.0或更高版本。这个版本现在应该在CRAN上。使用if_else(any(…),…)返回0和1以外的结果。请参见(3)我们在何处使用该样式。