我想根据特定条件找到行之间的差异。我设法使用dplyr和带滞后的mutate函数来做到这一点。我有大约10列和500行。除了一对,我能够找到列中大多数行的差异。问题是这两个列是因子形式,并使用我的代码导致警告消息:在ops.factor中对因素没有意义。为了解决这个问题,我尝试将数字更改为字符。
y <- mutate(df, d_f = df$L - lag(df$L) + n())
x <- as.numeric(as.character(df$z))
这会产生警告信息。使用suppresswarnings(x)会导致列中的所有值通过强制变为NA。
如何将因子更改为其他形式,以便找到行之间的差异?导致此问题的列是百分比,如果这有任何区别。
旁注:我是R的新手,看起来确实非常酷。
答案 0 :(得分:0)
示例数据
df <- data.frame(
id = c("A", "A", "A", "A", "B", "B", "B"),
num = c("1", "8", "6", "3", "7", "7", "9"))
dplyr
library(dplyr)
df_new <- df %>%
# factor to numeric
mutate(num = as.numeric(as.character(num))) %>%
# group by condition
group_by(id) %>%
# find difference
mutate(diff = num - lag(num))
输出
df_new
# id num diff
# <fctr> <dbl> <dbl>
# 1 A 1 NA
# 2 A 8 7
# 3 A 6 -2
# 4 A 3 -3
# 5 B 7 NA
# 6 B 7 0
# 7 B 9 2