【问题标题】:Incorrect function output函数输出不正确
【发布时间】:2016-09-15 11:53:31
【问题描述】:

以下是基于我的一小部分数据的示例:

NAME <- c("SYNOP", "SYNOP", "METAR", "METAR", "SYNOP", "METAR")
AIR <-  c(6.7, 8.3, 9.2, 8.9, 9.1, 8.7)
Example <- data.frame(NAME, AIR)

   NAME AIR
1 SYNOP 6.7
2 SYNOP 8.3
3 METAR 9.2
4 METAR 8.9
5 SYNOP 9.1
6 METAR 8.7

我正在使用 grep 选择其中 NAME == METAR 的数据子集并找出出现次数:

ex_METAR <- Example[grep("METAR", Example$NAME), ]
nrow(ex_METAR)

我必须对NAME 的大量实例重复此操作,并希望通过在函数中使用它来加快此过程。但是我一定是做错了什么,因为我每次都会收到一条错误消息:

example_Function <- function (A, B, C) {
A[grep("B", A$C), ]
}

> example_Function(Example, "METAR", Example$NAME)
[1] NAME AIR 
<0 rows> (or 0-length row.names)

我认为这是我描述“METAR”的方式,所以我尝试了仅使用 A 和 C 的函数并得到相同的错误。

example_Function <- function (A, C) {
A[grep("METAR", A$C), ]
}
example_Function(Example, Example$NAME)

我是否正在积极做错什么,或者这根本行不通?我以前从未尝试过以这种方式调整功能。或者也许一个函数是错误的方法?!提前致谢。

(不是 Aggregate a dataframe on a given column and display another column 的副本,它正在寻找具有最大值的子集。我需要对列中的单词进行子集并知道发生了多少次。)

【问题讨论】:

标签: r function


【解决方案1】:

我想这就是你要找的:

NAME <- c("SYNOP", "SYNOP", "METAR", "METAR", "SYNOP", "METAR")
AIR <-  c(6.7, 8.3, 9.2, 8.9, 9.1, 8.7)
Example <- data.frame(NAME, AIR)

library(dplyr)

Example %>% group_by(NAME) %>% summarize(Count=n())

输出:

Source: local data frame [2 x 2]

    NAME Count
  (fctr) (int)
1  METAR     3
2  SYNOP     3

【讨论】:

  • 是的,这几乎是一种简单的方法!谢谢
  • 能否将其标记为答案,如果它解决了您的问题。谢谢!
  • 谢谢@prateek1592,我有,您只需要等待才能接受答案。我还有一个问题,我可以合并一个循环或应用到这个吗?实际上,我在同一个表中有很多列我也需要应用此代码(不在示例中!)
  • 啊,我明白了。那么你想1)同时按多列分组吗?或者 2) 多次分组,一次取一列?
  • 多次。我有诸如 ID 和 SOURCE 之类的列也需要按不同的变量进行分组。我知道我可以多次执行代码,但列数会随着时间的推移而增加
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-21
  • 2023-03-06
相关资源
最近更新 更多