如何按指定条件自动扩展R语言数据框中的数值?
R实现数据列扩展需求
原始数据
df <- structure(list(value1 = c(-2.42288252774916), value2 = c(-1.99988470731567), value3 = c(-1.57678745345913)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -1L))
需求说明
需要基于上述df生成新数据框NEW.df,新增3列规则如下:
- NEWvalue1:将
value1向接近的最小整数方向扩展(示例中-2.42288扩展为-2.98,即向更小的整数-3靠近) - NEWvalue2:完全保留
value2的原始值 - NEWvalue3:将
value3向接近的最大整数方向扩展(示例中-1.57679扩展为-1.02,即向更大的整数-1靠近)
解决方案代码
# 生成新数据框,初始复制原数据 NEW.df <- df # 计算NEWvalue1:向最小整数方向偏移0.02(匹配示例结果) NEW.df$NEWvalue1 <- floor(df$value1) + 0.02 # 保留NEWvalue2原值 NEW.df$NEWvalue2 <- df$value2 # 计算NEWvalue3:向最大整数方向偏移0.02(匹配示例结果) NEW.df$NEWvalue3 <- ceiling(df$value3) - 0.02 # 查看最终结果 print(NEW.df)
代码说明
floor(x):返回小于等于x的最大整数,对负数而言就是更“小”的整数(如floor(-2.42)得到-3),加上0.02即可得到示例中的-2.98ceiling(x):返回大于等于x的最小整数,对负数而言就是更“大”的整数(如ceiling(-1.57)得到-1),减去0.02即可得到示例中的-1.02- 若无需固定0.02的偏移量,仅需取对应的整数,直接使用
floor(df$value1)和ceiling(df$value3)即可
内容的提问来源于stack exchange,提问作者Rustam
相关产品推荐
相关产品推荐

