根据单列dplyr数据表中的条件创建新变量
样本数据:根据单列dplyr数据表中的条件创建新变量,r,dplyr,data.table,data-manipulation,R,Dplyr,Data.table,Data Manipulation,样本数据: Group <- c("a", "a", "a", "b", "b", "b", "c", "c", "c") value_1 <- c(1.10, 2.5, 1.7, 0.99, 1.50, 1.65, 2.5, 2.5, 1.5) value_2 <- c(0.03, 1.3, 3.5, 0.02, 4.3, 1.2, 1.4, 1.4, 3.7) new_variable_1 <- c(1,0,1, 1,1,0, 0,0,1) df &l
Group <- c("a", "a", "a", "b", "b", "b", "c", "c", "c")
value_1 <- c(1.10, 2.5, 1.7, 0.99, 1.50, 1.65, 2.5, 2.5, 1.5)
value_2 <- c(0.03, 1.3, 3.5, 0.02, 4.3, 1.2, 1.4, 1.4, 3.7)
new_variable_1 <- c(1,0,1, 1,1,0, 0,0,1)
df <- data.frame(Group, value_1, value_2, new_variable_1)
组我们可以试试。我使用了以“New”开头的名称,以便更容易理解
解决方案1(感谢@Gregor):
库(dplyr)
df%>%
分组依据(分组)%>%
变异(新的变量=ifelse(值=1%)
分组依据(分组)%>%
mutate(New_variable_1=ifelse(value_1)你指的是数据表
还是数据表
?请阅读以更好地表述问题。复制和粘贴所需的输出更容易。它在视觉上更“吸引人”,或者更容易理解(在我看来).谢谢Nelson。我需要处理所有组,而不仅仅是a组。您的代码仅适用于“a”组但不是针对其他组。你没有说其他组会发生什么,所以我假设他们取最大值value\u 1
@JonDongennew\u variable\u 1是正确的输出。很抱歉不清楚。@NelsonGon我现在明白了,之所以使用1.7
,是因为它是value\u 1
与max在同一行中的值(值_2)
对于组“a”(这就是OP所说的“对应”的意思)类似地,对于组“b”,1.5是因为它在第5行,对于组“b”,它有最大值。我编辑了这个问题——我认为它更清楚。对于max
,你不需要ifelse
,它总是value\u 2
的最大值。我认为类似于新变量\u 1=ifelse(value\u 1
library(dplyr)
df %>%
group_by(Group) %>%
mutate(New_variable_1 = ifelse(value_1 <= value_1[which.max(value_2)], 1, 0))
df %>%
group_by(Group) %>%
mutate(New_variable_1 = ifelse(value_1 <= value_1[which.max(value_2)], 1, 0),
NewVar1=value_1[which.max(value_2)]*1.1)