Re: [问题] 如何将资料分类

楼主: celestialgod (天)   2016-03-20 20:23:37
※ 引述《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

Links booklink

Contact Us: admin [ a t ] ucptt.com