如何在R中提取结果的索引值。
data.frame(sort(table(df$col1),decreasing=TRUE))
这将导致col1值及其计数的输出。 输出如下:
Var1 | freq
---------------------------
1 ABC | 10
2 DEF | 9
...
我基本上是在尝试提取“ ABC”。
现在,我相信以下方法会起作用:
x <- data.frame(sort(table(df$col1),decreasing=TRUE))
x[['Var1']][1]
但是我希望能够在一个班轮中做到这一点。
更新答案:
以下内容将在列(col1)中输出最大的重复发生值:
subset(df,!is.na(df$col1),) %>% count(col1) %>% arrange(desc(n)) %>% c(1)[1]
答案 0 :(得分:1)
如果要使用 dplyr包提取值单列,则可以使用select
。例如df%>%count(col1)%>%arrange(desc(n))%>%select(col1)
要查找任何列/属性的索引以及列中值的索引,可以使用which
,此语法需要逻辑运算符和单个值。例如-`which(colnames(df)=='column_name'),这会为您提供该列的索引。
要查找该列任何值的索引,可以使用which(df$col1 == 1
答案 1 :(得分:0)
由于data.frame()
的结果是一个数据帧,因此可以立即在其上使用提取运算符。
# generate the data
x <- c(rep("ABC",10),rep("DEF",9))
# extract string with highest frequency from table
data.frame(sort(table(x),decreasing=TRUE))[1,1]
...以及结果:
> data.frame(sort(table(x),decreasing=TRUE))[1,1]
[1] ABC
Levels: ABC DEF
>
一个人可以使用as.character()
从结果中删除因子水平。
基于注释,需要获取数字变量的计数,然后使用原始数字值来子集原始数据帧。
这里是使用sqldf
软件包来满足附加要求的解决方案。
# SQLDF solution
library(sqldf)
x <- data.frame(V1=c(rep(1,10),rep(2,8)),stringsAsFactors=FALSE)
sqlStmt <- "select V1, count(*) as count from x group by V1"
y <- sqldf(sqlStmt)
z <- y[y$count == max(y$count),1]
class(z)
...以及输出。
> z <- y[y$count == max(y$count),1]
> class(z)
[1] "numeric"
请注意,最终结果的类别仍是数字,而不是转换为因子或字符值。