【问题标题】:Select specific value out of a data frame从数据框中选择特定值
【发布时间】:2018-11-09 15:51:34
【问题描述】:

我想从数据框中选择一个特定的值,但不知道怎么做。这是数据框:

picture of data frame

我想从“X1”列中选择一个特定值,但我不想通过索引(1 到 10)访问它,而是使用“时间”列。

如果我想通过索引从第 8 行 (0.89) 中选择值 X1,我可以这样做:

df[8,"X1"]

但我想通过日期和时间访问该值。我还没有找到解决方案。时间列基本上是将 X 列和 X.1 列合并到一个单独的列中,采用 POSIXct 格式 (%Y-%m-%d %H:%M:%S)。

类似这样的东西(但不能那样工作):

df[df$time[2018-08-10 13:29:20], "X1"]

如果有任何想法,我将不胜感激。

【问题讨论】:

  • 嗨,我认为这很容易。请尝试以下操作:df[df$time == "2018-08-10 13:29:20", "X1"]
  • 不幸的是不起作用,我收到一个错误:错误:“x ”中的意外'='

标签: r dataframe time posixct


【解决方案1】:

这很容易。 你只需要做一个比较像

 df[df$time == "2018-08-10 13:29:20", "X1"]

如果您想让“X1”的所有值都大于特定时间,您甚至可以使用更大或更小的比较,例如

 df[df$time > "2018-08-10 13:29:20", "X1"]    
 df[df$time >= "2018-08-10 13:29:20", "X1"]    
 df[df$time < "2018-08-10 13:29:20", "X1"]    
 df[df$time <= "2018-08-10 13:29:20", "X1"]    

比较将创建一个逻辑向量,它会返回逻辑向量为TRUE的所有行

如果它不能正常工作,您必须确保您的时间列采用正确的格式,例如 POSIXct。你可以用as.POSIXct来做到这一点

【讨论】:

  • 非常感谢您,这很有效:) == 成功了。但是现在我得到了一个带有“NA”的向量:[1] 0.89 NA 但我只想要 0.89 的值......我想我可以弄清楚
  • @JanStamm 你可以使用函数 isTrue() 来解决这个问题。请看一下这个链接。它可能有用:r-bloggers.com/r-tip-use-istrue
猜你喜欢
  • 1970-01-01
  • 2022-01-26
  • 2022-07-08
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 2020-10-13
  • 1970-01-01
  • 2022-11-01
相关资源
最近更新 更多