给定R中另一个变量的条件,你能从一个变量中提取最小值吗?
假设我有以下最小可再现示例中的数据。我想用ready.data$RetAge from ready.data的最小值更新MinReadyAge变量,其中ready.data$ready=='Yes'。有没有一种有效的方法 对于任何年龄都没有“是”的情况,如果有返回“从未准备好”的方法,则可获得加分给定R中另一个变量的条件,你能从一个变量中提取最小值吗?,r,dplyr,R,Dplyr,假设我有以下最小可再现示例中的数据。我想用ready.data$RetAge from ready.data的最小值更新MinReadyAge变量,其中ready.data$ready=='Yes'。有没有一种有效的方法 对于任何年龄都没有“是”的情况,如果有返回“从未准备好”的方法,则可获得加分 ID <- c(1,2,3,4,5) MinReadyAge <- 1:5 min.age.data <- as.data.frame(cbind(ID,MinReadyAge))
ID <- c(1,2,3,4,5)
MinReadyAge <- 1:5
min.age.data <- as.data.frame(cbind(ID,MinReadyAge))
ID <- c(1,1,1,1,1,
2,2,2,2,2,
3,3,3,3,3,
4,4,4,4,4,
5,5,5,5,5)
RetAge <- rep(seq(from = 65, to = 69, by = 1),5)
Ready <- c("No","No","No","No","No",
"No","No","No","No","Yes",
"No","No","No","Yes","Yes",
"No","No","Yes","Yes","Yes",
"Yes","Yes","Yes","Yes","Yes")
ready.data <- as.data.frame(cbind(ID,RetAge,Ready))
ID我们可以在slice
ingmin
ID的'RetAge'值之后,对'min.age.data'进行连接,其中'Ready'为“Yes”
库(dplyr)
就绪。数据%>%
过滤器(就绪==“是”)%>%
分组依据(ID)%>%
切片最小值(保留)%>%
解组%>%
选择(ID,MinRetAge=RetAge)%>%
右键连接(最小年龄数据)%>%
安排(ID)
#一个tibble:5x3
#ID MinRetAge MinReadyAge
#
#1 NA 1
#2 2 69 2
#3 3 68 3
#4 4 67 4
#5 5 65 5
如果我们需要更新“MinRetAge”列
min.age.data <- ready.data %>%
filter(Ready == 'Yes') %>%
group_by(ID) %>%
slice_min(RetAge) %>%
ungroup %>%
select(ID, RetAge) %>%
right_join(min.age.data) %>%
transmute(ID, MinReadyAge = coalesce(RetAge, MinReadyAge)) %>%
arrange(ID)
min.age.data%
过滤器(就绪==“是”)%>%
分组依据(ID)%>%
切片最小值(保留)%>%
解组%>%
选择(ID,重新标记)%>%
右键连接(最小年龄数据)%>%
transmute(ID,MinReadyAge=合并(RetAge,MinReadyAge))%>%
安排(ID)
-输出
min.age.data
# A tibble: 5 x 2
# ID MinReadyAge
# <dbl> <dbl>
#1 1 1
#2 2 69
#3 3 68
#4 4 67
#5 5 65
min.age.data
#一个tibble:5x2
#ID MinReadyAge
#
#1 1 1
#2 2 69
#3 3 68
#4 4 67
#5 5 65
数据
#//as.data.frame(不需要cbind,它将不必要地更改类型
#//默认情况下,cbind返回一个矩阵,矩阵只能有一种类型
#//而是直接使用data.frame
ready.data我是否应该结合连接将其拉入“min.age.data”数据框?@Ccs该列是在数据中创建的。您只需更新对象,即ready.data%group\u by(ID)%%>%…
@Ccs我也使用连接方法进行了更新。我希望MinRetAge位于“min.age.data”数据框中,而不是“ready.data”数据框。也就是说,我想查找该结果并更新min.age.data$MinReadyAge变量。我试图避免在ready.data数据框中创建一个新变量。我想将这两个变量合并,然后删除该变量不会太麻烦。@CcS在这种情况下,只需对该数据集进行合并。请检查更新后的数据框输出
min.age.data
# A tibble: 5 x 2
# ID MinReadyAge
# <dbl> <dbl>
#1 1 1
#2 2 69
#3 3 68
#4 4 67
#5 5 65
# // as.data.frame(cbind is not needed and it will unnecessarily chage the type
# // cbind by default returns a matrix and matrix can have only a single type
# // instead using data.frame directly
ready.data <- data.frame(ID, RetAge, Ready)
min.age.data <- data.frame(ID, MinReadyAge)