Re: [問題] 如何將資料分類
※ 引述《SleepyChink (SleepyChink)》之銘言:
: [問題類型]:
: 我想用R做一件事,但不知道如何完成。
: [軟體熟悉度]:
: 請把以下不需要的部份刪除
: 新手(沒寫過程式,R 是我的第一次)
: [問題敘述]:
: X Y Z Val
: 1 1 1 1 1
: 2 2 1 1 0
: 3 1 2 1 0
: 4 2 2 1 0
: 5 1 1 2 1
: 6 2 1 2 1
: 7 1 2 2 1
: 8 2 2 2 0
: 要如何將資料按照Val分成兩組連續資料?
: 大概成為下列樣式
: Val. 0. 1.
: 2. 1.
: 1. 1.
: 1. 1.
: 1. 1.
: 2. 1.
: 1. 2.
: 以此類推資料長度不會一樣,不足可以以0補齊嗎?
: 麻煩大家幫忙解惑一下,遇過幾次感覺應該是基本的資料處理,但依舊卡以剛開始學習請
: 多多包涵。
: 謝謝
:
library(data.table)
library(magrittr)
library(plyr)
library(dplyr)
library(tidyr)
dat <- fread('
X Y Z Val
1 1 1 1
2 1 1 0
1 2 1 0
2 2 1 0
1 1 2 1
2 1 2 1
1 2 2 1
2 2 2 0') %>% tbl_dt
# dplyr
gather(dat, cate1, cate2, -Val)
# Source: local data table [24 x 3]
#
# Val cate1 cate2
# (int) (chr) (int)
# 1 1 X 1
# 2 0 X 2
# 3 0 X 1
# 4 0 X 2
# 5 1 X 1
# 6 1 X 2
# 7 1 X 1
# 8 0 X 2
# 9 1 Y 1
# 10 0 Y 1
# .. ... ... ...
# stack
dat %<>% tbl_df # data.table不能用stack,轉成data.frame
stack(dat, -Val) %>% cbind(rep(dat$Val, 3))
# values ind rep(dat$Val, 3)
# 1 1 X 1
# 2 2 X 0
# 3 1 X 0
# 4 2 X 0
# 5 1 X 1
# 6 2 X 1
# 7 1 X 1
# 8 2 X 0
# 9 1 Y 1
# 10 1 Y 0
# 11 2 Y 0
# 12 2 Y 0
# 13 1 Y 1
# 14 1 Y 1
# 15 2 Y 1
# 16 2 Y 0
# 17 1 Z 1
# 18 1 Z 0
# 19 1 Z 0
# 20 1 Z 0
# 21 2 Z 1
# 22 2 Z 1
# 23 2 Z 1
# 24 2 Z 0
--
R資料整理套件系列文:
magrittr #1LhSWhpH (R_Language) http://tinyurl.com/1LhSWhpH
data.table #1LhW7Tvj (R_Language) http://tinyurl.com/1LhW7Tvj
dplyr(上) #1LhpJCfB (R_Language) http://tinyurl.com/1LhpJCfB
dplyr(下) #1Lhw8b-s (R_Language)
tidyr #1Liqls1R (R_Language) http://tinyurl.com/1Liqls1R
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.73.232
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1458476621.A.E86.html
討論串 (同標題文章)
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章