每10行转换一列(约10,000行)

ale*_*lex 1 r

我有一个包含5列的csv文件.我想将第四列csv文件转换到第10行.并且第5列csv文件需要每10行转换一次,直到列的末尾.我无法为此循环.很感谢任何形式的帮助.谢谢!

test<-read.csv("sample.csv",sep=',') 
first<-test$col4[1:10] 
t(first) 
n=length(sample.csv) 
b<-1:1000 
a<-1:10 
for(i in 1:n) { 
  second<-test[a-9:a]
}
Run Code Online (Sandbox Code Playgroud)

我已经读过第4列第10行并转换它们.我想把第五列放在一个循环中并转置,然后转换'rbind'这两个.

And*_*rie 7

为了简化(并检查我的理解),您的问题归结为如何重塑a的单个列,data.frame使得此列在每10个元素处被拆分.

在基数R中有一个函数来执行此操作,称为unstack.您可以按如下方式在问题上使用此功能.

首先设置一些虚拟数据:

df <- data.frame(
    A=1:50,
    B=101:150
)
Run Code Online (Sandbox Code Playgroud)

现在,要使用unstack我们需要创建一个data.frame包含我们的数据以取消堆栈的临时文件以及如何取消堆栈的指示器.您的案例中的指标是一个重复的向量1:10,使用rep以下方法创建:

tmp <- data.frame(
    X=df$B,
    ind=rep(1:10, nrow(df)/10)
)
Run Code Online (Sandbox Code Playgroud)

然后使用一些unstack魔法:

unstack(tmp, X~ind)

   X1  X2  X3  X4  X5  X6  X7  X8  X9 X10
1 101 102 103 104 105 106 107 108 109 110
2 111 112 113 114 115 116 117 118 119 120
3 121 122 123 124 125 126 127 128 129 130
4 131 132 133 134 135 136 137 138 139 140
5 141 142 143 144 145 146 147 148 149 150
Run Code Online (Sandbox Code Playgroud)

将它与原始第一列的子集相结合df:

rbind(A=df$A[1:10], unstack(tmp, X~ind))

   X1  X2  X3  X4  X5  X6  X7  X8  X9 X10
A   1   2   3   4   5   6   7   8   9  10
2 101 102 103 104 105 106 107 108 109 110
3 111 112 113 114 115 116 117 118 119 120
4 121 122 123 124 125 126 127 128 129 130
5 131 132 133 134 135 136 137 138 139 140
6 141 142 143 144 145 146 147 148 149 150
Run Code Online (Sandbox Code Playgroud)