[英]R: Try to fill in a column with values by certain condition
我真的需要在 R 中完成以下任务的建议:我有一个带有时间的列和一个带有间隔的列。 对于以后的聚合,我必须设置时间间隔。 示例:我有一张桌子:
time interval
1 NA
2 NA
3 NA
4 NA
5 NA
6 NA
期待:
time interval
1 5
2 5
3 5
4 5
5 5
6 10
14 15
代码:
count=0
dt = 5
dt_temp = 5
for (i in df_start$time){
if (i<dt) {
df_start$interval[count] =dt
}else{
dt= dt+dt_temp
df_start$interval[count] =dt
}
count = count+1
}
结果(或检查图片):
time interval
1 5
2 5
3 5
4 5
4.946 10 (wrong)
5.021 15 (totally wrong)
6.023 20 (totally wrong)
我真的要疯了,因为我坐了将近半天才发现问题。 提前致谢!
这是一个基本的 R 解决方案,其中使用了ceiling
:
df$interval <- ceiling(df$time/5)*5
以至于
> df
time interval
1 1 5
2 2 5
3 3 5
4 4 5
5 5 5
6 6 10
7 14 15
数据
df <- structure(list(time = c(1L, 2L, 3L, 4L, 5L, 6L, 14L)), row.names = c(NA,
-7L), class = "data.frame")
df_start$interval = ((df_start$time - 1) %/% 5 + 1) *5
试试这个代码:
df_start <- data.frame(time = c(1,2,3,4,5,6,14), interval = 0)
count= 1
dt = 5
dt_temp = 5
for (i in df_start$time){
if (i<=dt) {
df_start$interval[count] =dt
}else{
dt= dt+dt_temp
df_start$interval[count] =dt
}
count = count+1
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.