R:如何根据其他列中的组合条件查找一列中的元素
如果列组等于2且最大值出现在列OBS中,我将尝试根据组合条件在列ID中查找相应的元素 如何在R中完成此任务 这是我的数据集:R:如何根据其他列中的组合条件查找一列中的元素,r,R,如果列组等于2且最大值出现在列OBS中,我将尝试根据组合条件在列ID中查找相应的元素 如何在R中完成此任务 这是我的数据集: ID <- as.factor(c("A","B","C","D","E","F")) OBS <- c(1,3,2,8,3,10) GROUP <- as.factor(c(1,1,1,2,2,2)) df <- data.frame(ID,OBS,GROUP) ID假设您的意思是希望首先按照GROUP应等于2的条件对数据帧进行子集,
ID <- as.factor(c("A","B","C","D","E","F"))
OBS <- c(1,3,2,8,3,10)
GROUP <- as.factor(c(1,1,1,2,2,2))
df <- data.frame(ID,OBS,GROUP)
ID假设您的意思是希望首先按照GROUP
应等于2的条件对数据帧进行子集,然后确定OBS
值最高的ID,这应该可以做到:
df2 <- df[df$GROUP==2,]
df2$ID[df2$OBS==max(df2$OBS)]
df2假设您的意思是希望首先按照GROUP
应等于2的条件对数据帧进行子集,然后识别OBS
值最高的ID,这应该可以实现以下目的:
df2 <- df[df$GROUP==2,]
df2$ID[df2$OBS==max(df2$OBS)]
df2您尝试了什么?为了清楚起见,您希望从总数据集中取出最大OBS,或者只希望组中的最大OBS==2?对于后者by(df,df$GROUP,function(x)x[which.max(x$OBS),])$`2`
但不要这样做。从示例中,对于组2,OBS中的最大值为10。ID中对应的元素是F。我想根据组和最大OBS找到对应的元素。我不知道是什么阻止了你。您可能会猜到R的函数名为==
和max
…我不知道函数名是哪个。max…您尝试了什么?为了清楚起见,您希望从总数据集中取出最大OBS,或者只希望组中的最大OBS==2?对于后者by(df,df$GROUP,function(x)x[which.max(x$OBS),])$`2`
但不要这样做。从示例中,对于组2,OBS中的最大值为10。ID中对应的元素是F。我想根据组和最大OBS找到对应的元素。我不知道是什么阻止了你。您可能会猜到R的函数名为==
和max
…我不知道哪个函数是.max…可能值得一提的是包中更简单的语法:库(data.table);setDT(df)[GROUP==2][OBS==max(OBS)]
或库(dplyr);df%>%filter(GROUP==2)%>%filter(OBS==max(OBS))
使用(df,ID[which.max(OBS*GROUP%in%2)])
我也在0行中完成了,但我不会告诉你如何使用0行?用眼睛看?:)也许值得一提的是软件包更简单的语法:library(data.table);setDT(df)[GROUP==2][OBS==max(OBS)]
或库(dplyr);df%>%filter(GROUP==2)%>%filter(OBS==max(OBS))
使用(df,ID[which.max(OBS*GROUP%in%2)])
我也在0行中完成了,但我不会告诉你如何使用0行?用眼睛看?:)