如何在R中的数据帧中循环一列?
我对R很陌生。我有一个如何在R中的数据帧中循环一列?,r,dataframe,R,Dataframe,我对R很陌生。我有一个df和一个V1列。我想创建一个循环来计算比率(cuf off值) 我想取第一个数字1除以301,然后将值放入adf$V2。然后我想把前两个数相加,然后除以301等等 For example: V2 1/301 (first value of df) 0.0033 2/301 (sum of the first two values of d
df
和一个V1
列。我想创建一个循环来计算比率(cuf off值)
我想取第一个数字1除以301,然后将值放入adf$V2
。然后我想把前两个数相加,然后除以301等等
For example:
V2
1/301 (first value of df) 0.0033
2/301 (sum of the first two values of df) 0.0066
2/301 (sum of the first three values of df) 0.0066
df
V1
1
1
0
0
1
0
1
1
1
0
您可以将
V1
值的累积和除以301
df$V2 <- cumsum(df$V1)/301
df
# V1 V2
#1 1 0.00332
#2 1 0.00664
#3 0 0.00664
#4 0 0.00664
#5 1 0.00997
#6 0 0.00997
#7 1 0.01329
#8 1 0.01661
#9 1 0.01993
#10 0 0.01993
df$V2我们可以transform
通过将“V1”的累积和除以301来创建“V2”
df <- transform(df, V2 = cumsum(V1)/301)
或者另一个选项是Reduce
withaccumulate=TRUE
transform(df, V2 = Reduce(`+`, V1, accumulate = TRUE)/301)
或者,如果我们需要循环,在行序列上循环,然后通过元素序列的sum
分配'V2'的每个值,从1到'V1'的行除以301
df$V2 <- 0
for(i in seq_len(nrow(df))) {
df$V2[i] <- sum(df$V1[1:i])/301
}
或使用累计
library(purrr)
df %>%
mutate(V2 = accumulate(V1, `+`)/301)
数据
df您能否显示完整的预期输出
library(dplyr)
df %>%
mutate(V2 = cumsum(V1)/301)
library(purrr)
df %>%
mutate(V2 = accumulate(V1, `+`)/301)
df <- structure(list(V1 = c(1, 1, 0, 0, 1, 0, 1, 1, 1, 0)), class = "data.frame",
row.names = c(NA,
-10L))