Re: [問題] 資料轉換

看板R_Language作者 (只有神知道的世界)時間9年前 (2015/11/15 03:09), 9年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/6 (看更多)
※ 引述《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
文章代碼(AID): #1MHuS1Ya (R_Language)
討論串 (同標題文章)
文章代碼(AID): #1MHuS1Ya (R_Language)