【发布时间】:2021-07-03 13:41:27
【问题描述】:
我想根据 2 年的差异对我的数据进行分类。
我想使用 diff 函数,但它不适用于负数。
我收到此错误
'lag' and 'differences' must be integers >= 1
df$new_var <- fcase(
df$year1== df$year2, '4',
diff(df$year1, df$year2) <= 5, '3',
diff(df$ipodate1, df$ipodate2) <= 10, '2',
default = '0'
)
有什么方法可以计算绝对值的差异
df <- data.frame(
year1 = c('1997','2008','2004','2010','2005','2007','2008'),
year2 = c('1997','2018','1988','1929','2023','2012','2009'))
所以结局应该是这样的:
| year1 | year2 | new_var |
|---|---|---|
| 1997 | 1997 | 4 |
| 2008 | 20018 | 2 |
| 2004 | 1988 | 0 |
...
【问题讨论】:
-
1.
year应该是数字类型 2。在diff(df$year1, df$year2) <= 5中,LHS 是向量,RHS 只是单个5 -
检查 ?diff,你必须检查参数
-
我使用了 ?diff 但我没有找到解决方案。我不擅长编程,不知道你的意思。在我的数据中,年份是数字
-
您的年份列是因子,因此首先将它们转换为整数。然后只需使用 col3 = year1 - year2 或 cols3 = abs(year1- year2)。所以你可以在 col3 上使用 fcase。分两步做会更容易
标签: r