我正在处理数据清理问题应该是一件简单的事情,并且非常感谢一些帮助。
我在第一列中有一个日期,而在列名中有不同的类别(红色,黄色,橙色)。 df的其余部分是数字。我想搜索df的所有元素(第一列除外);如果元素大于阈值水平(例如,i> 0.2),我想返回日期和列名称。理想情况下,我的输出将是nx2 df,如下所示:
是否有一个明确的最佳方法来使用它:我已经阅读了哪些[]和子集()和%in%并且没有明确的答案而已经离开了。
再次感谢。
答案 0 :(得分:1)
可能是
library(reshape2)
subset(melt(df, id.var='date'), value > 0.2, select=1:2)
或使用dplyr/tidyr
library(dplyr)
library(tidyr)
gather(df, Var, Val,-date) %>%
filter(Val > 0.2) %>%
select(-Val)
df <- structure(list(date = c("November, 2003", "October, 1997",
"September, 2005"), Red = c(0.1, 0.2, 0.3), Yellow = c(0.3, 0.4, 0.2),
Orange = c(0.1, 0.2, 0.4)), .Names = c("date", "Red", "Yellow", "Orange"),
row.names = c(NA, -3L), class = "data.frame")