Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:如何根据其他列中的组合条件查找一列中的元素_R - Fatal编程技术网

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的条件对数据帧进行子集,

如果列组等于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的条件对数据帧进行子集,然后确定
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行?用眼睛看?:)