Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R列中的每一个更改都增加0.1_R - Fatal编程技术网

R列中的每一个更改都增加0.1

R列中的每一个更改都增加0.1,r,R,使用这个数据帧,我想为var1中的每个更改将var2增加0.1 df <- data.frame(var1=c("a", "a", "1", "0", "b", "b", "b", "c", "1", "1")) 我能够使用下面的代码为var1中的每个更改将var2增加1,但我无法将其操作为增加0.1 df$var2 <- c(0,cumsum(as.numeric(with(df,var1[1:(length(var1)-1)] != var1[2:length(var1)]))

使用这个数据帧,我想为var1中的每个更改将var2增加0.1

df <- data.frame(var1=c("a", "a", "1", "0", "b", "b", "b", "c", "1", "1"))
我能够使用下面的代码为var1中的每个更改将var2增加1,但我无法将其操作为增加0.1

df$var2 <- c(0,cumsum(as.numeric(with(df,var1[1:(length(var1)-1)] != var1[2:length(var1)]))))
df$var2我们可以试试

df$var1 <- as.character(df$var1)
df$var2 <- seq(0, 1, by = 0.1)[with(df, cumsum(c(TRUE, var1[-1]!= var1[-length(var1)])))] + 1

df$var1您可以将此任务拆分为较小的任务,并按顺序完成它们

  • 创建一行中“滞后”的列
  • 比较这两列
  • 计算累积总和,将其放入数据帧中
  • 因此,在代码中:

    helper=c(df$var1[1],df$var1[1:(nrow(df)-1)])

    isDifferent=as.integer(df$var1)=helper
    注意由于R将字符串创建为因子而转换为int


    df$var2=1+cumsum(isDifferent*0.1)

    这就成功了!谢谢你的帮助,我花了太长时间在这个上面挠头。
    df$var1 <- as.character(df$var1)
    df$var2 <- seq(0, 1, by = 0.1)[with(df, cumsum(c(TRUE, var1[-1]!= var1[-length(var1)])))] + 1