【发布时间】:2020-07-10 10:45:26
【问题描述】:
我想在另一列有条件地向数据框添加一列。
这是一个例子。我有一个简单的数据框
library(tidyverse)
set.seed(123)
df <- data.frame(time = seq(1,5,1),
x = seq(1,5,1) + rnorm(n=5, sd=0.3))
> df
time x
1 1 0.8318573
2 2 1.9309468
3 3 3.4676125
4 4 4.0211525
5 5 5.0387863
我想将x 超过特定值(例如x > 4)的time 添加到名为border_value 的新列中。
以下代码确实有效:
df <- df %>% mutate(border_value = min(.[.$x > 4, "time"]))
> df
time x border_value
1 1 0.8318573 4
2 2 1.9309468 4
3 3 3.4676125 4
4 4 4.0211525 4
5 5 5.0387863 4
问题
我有很多数据框,其中x 的值不同。有时,这些值不会超过x>4 的border_value。在这些情况下,R 会产生错误:
警告消息:在 min(.[.$x > 4, "time"]) 中:没有非缺失参数 至分钟;返回Inf
我想更改我的代码,以免发生此错误,而 R 将 NA 放在列中。知道怎么做吗?
更新
基于this 帖子,我能够将代码重写为:
df <- df %>%
mutate(border_value = ifelse(test = is.infinite(min(.[.$x > 7, "time"])), yes = NA, no = min(.[.$x > 4, "time"])))
这不会生成Infs,但仍然会生成错误...
【问题讨论】: