我有一个sftp.upload!('x.txt', 'x.txt', progress: SFTPEventHandler.new)
data.frame,看起来像:
R
我想将其重塑为:
V1
1 rafael de siqueira campos gil lemos
2 Idade
3 19
4 Genero
5 m
6 economia
7 Rodada 1
8 Tempo gasto: 0
9 Valor apostado: 30.000000
10 PERDEU
...
161 Rodada 19
162 Tempo gasto: 0
163 Valor apostado: 20.000000
164 PERDEU
165 Valor acumulado FINAL: 1879.00
我试图了解该问题的其他解决方案,但未成功。我认为这种情况涉及一系列解决方案。有人可以帮我吗?
答案 0 :(得分:0)
使用文件myfile.txt:
rafael de siqueira campos gil lemos
Idade
19
Genero
m
economia
Rodada 1
Tempo gasto: 0
Valor apostado: 30.000000
PERDEU
Rodada 2
Tempo gasto: 15.00
Valor apostado: 40.000000
GANHOU
Rodada 3
Tempo gasto: 0
Valor apostado: 40.000000
PERDEU
Rodada 4
Tempo gasto: 0
Valor apostado: 40.000000
PERDEU
Rodada 5
Tempo gasto: 9.00
Valor apostado: 60.000000
PERDEU
Rodada 6
Tempo gasto: 0
Valor apostado: 60.000000
PERDEU
Rodada 7
Tempo gasto: 0
Valor apostado: 60.000000
PERDEU
Rodada 8
Tempo gasto: 15.00
Valor apostado: 80.000000
PERDEU
Rodada 9
Tempo gasto: 0
Valor apostado: 80.000000
PERDEU
Rodada 10
Tempo gasto: 0
Valor apostado: 80.000000
GANHOU
Rodada 11
Tempo gasto: 9.00
Valor apostado: 50.000000
PERDEU
Rodada 12
Tempo gasto: 0
Valor apostado: 50.000000
PERDEU
Rodada 13
Tempo gasto: 0
Valor apostado: 50.000000
PERDEU
Rodada 14
Tempo gasto: 13.00
Valor apostado: 75.000000
GANHOU
Rodada 15
Tempo gasto: 0
Valor apostado: 75.000000
GANHOU
Rodada 16
Tempo gasto: 0
Valor apostado: 75.000000
PERDEU
Rodada 17
Tempo gasto: 7.00
Valor apostado: 45.000000
PERDEU
Rodada 18
Tempo gasto: 0
Valor apostado: 45.000000
PERDEU
Rodada 19
Tempo gasto: 0
Valor apostado: 45.000000
GANHOU
Valor acumulado FINAL: 1691.50
这是我的丑陋解决方案:
#### Read string data and split into data frame
RawData = readLines("myfile.txt")
for (i in c("Rodada ", "Tempo gasto: ", "Valor apostado: ","Valor acumulado FINAL: ")){ RawData <- gsub(i,"",RawData,fixed=TRUE) }
RawData = as.data.frame(do.call(rbind, strsplit(RawData, split=" {2,10}")), stringsAsFactors=FALSE)
RawData = as.data.frame(t(RawData))
Data <- data.frame("name" = replicate(19,RawData$V1) , "age" = replicate(19,RawData$V3), "gender" = replicate(19,RawData$V5), "curse" = replicate(19,RawData$V6), "period" = NA, "time" = NA, "bet" = NA,"result" = NA,"finalamount" = replicate(19,RawData$V83))
c <- data.frame()
for (w in 7:10){
for (i in seq(w,length(RawData)-1,4)){
c <- rbind(c,data.frame(RawData[,i]))
}
ifelse(w==7,assign("period",c),ifelse(w==8,assign("time",c),ifelse(w==9,assign("bet",c),assign("result",c))))
c <- data.frame()
}
Data$period <- period
Data$time <- time
Data$bet <- bet
Data$result <- result
rm(i,w,c,period,time,bet,result)