Re: [問題] 資料轉換
※ 引述《Rose9305 (台產零零柒)》之銘言:
: [問題類型]:
: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
: [軟體熟悉度]:
: 新手(沒寫過程式,R 是我的第一次)
: [問題敘述]:
: 資料轉換
: 我有個資料csv檔,裡面內容大概如下 :
: x y z
: 55 0.2 1
: 44 0.6 1
: 78 0.7 0
: 46 0.8 0
: 98 0.9 1
: 47 0.4 1
: 46 0.5 1
: 想(限)用 ''for 迴圈''轉換成只取x,z並以z重排x,如下:
: 1 55 44
: 0 78 46
: 1 98 47 46
: 把 z=1 排成一列,一遇到 z=0 又排成一列,再讀到1又排成一列這樣下去
: 不知道要如何用for迴圈來把資料轉換成上述。
剛好看到這個問題蠻有趣的!順便加了兩筆record來測試
x y z
13 0.43 0
33 0.33 1
暴力解法, 直接實作你的邏輯,
目前想不到其他解法,感覺可以用建立指標的方式來判斷資料輸出,
如果其他版友有其他想法或指正歡迎討論!
path = "your_data_path"
data=read.csv(path)
a=NULL
for(i in 1:nrow(data)){
x = data[i,1]
z = data[i,3]
#inintialize
if(is.null(a)){
a = c(z,x)
if(is.na(data[i+1,3])||data[i+1,3]!=a[1]){
print(a)
a = NULL #return
}
}
else if(a[1]==1){
a = c(a,x)
if(is.na(data[i+1,3])||data[i+1,3]!=1){
print(a)
a = NULL #return
}
}
else if(a[1]==0){
a = c(a,x)
if(is.na(data[i+1,3])||data[i+1,3]!=0){
print(a)
a = NULL #return
}
}
}
##output:
##append some test data after sample
## [1] 1 55 44
## [1] 0 78 46
## [1] 1 98 47 46
## [1] 0 13
## [1] 1 33
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.228.143.30
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1447528193.A.8A4.html
※ 編輯: OGCKM (61.228.143.30), 11/15/2015 03:14:35
討論串 (同標題文章)
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章