用R中的循环对数据帧进行改组

时间:2019-07-07 09:07:41

标签: r loops shuffle

我正在使用R中的循环进行重排。我想将数据重排5次。结果将分别保存a和b数据的每个回合信息保存在文件中。

df <- data.frame(a=1:5, b=6:10, c=10:15, d=15:20)
q <- c("w", "x", "y", "z")
row.names(df) <- q
df1 <- df
a2 <- list()
b2 <- list()
for(i in 1:5){
for (i in 1:nrow(df))
df1[i,] <- df[i,order(runif(length(df[i,])))]

a <- data.frame(N_sum = apply(df1[,1:2], 1, sum) )
a$divide_by_NO<- a$N_sum/12
a$log_value <- log(a$divide_by_NO,2)
a$i <- i 
a2[[i]] <- a
b<- data.frame( P_sum = apply(df1[,3:4], 1, sum))
b$divide_by_NO<- b$P_sum/6
b$log_value <- log(b$divide_by_NO,2)
b$i <- i 
b2[[i]] <- b
}
a <- do.call(rbind,a2)
b <- do.call(rbind,b2)
write.csv(a,"a_log_data.csv", row.names = TRUE, sep=",", quote = FALSE)
write.csv(b,"b_log_data.csv", row.names = TRUE, sep=",", quote = FALSE)

但是该编程无法正常工作。需要什么改进?

我的预期结果是:

   N_sum    divide_by_NO  log_value  loop
w   11        0.916        -0.12       1
x   14        1.166         0.22       1
y   4         0.333        -1.58       1
z   8         0.666        -0.58       1
w   12        1             0          2
x   2         0.166        -2.59       2
y   10        0.833        -0.26       2
z   22        1.833         0.87       2

0 个答案:

没有答案