如何在R中提取输出值?

时间:2019-06-01 22:41:45

标签: r

如何在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]

2 个答案:

答案 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"

请注意,最终结果的类别仍是数字,而不是转换为因子或字符值。