2014-09-24 29 views
0

我是全新的社區,以及我是r。這是我的數據集的示例部分:創建數據集如果語句

brettcontrol <- data.frame(rep.sw=c(NA,"sw","rep","sw"), RT=c(1:4)) 
brettcontrol 

    rep.sw RT 
1 <NA> 1 
2  sw 2 
3 rep 3 
4  sw 4 

所以,如果你看到一些價值觀下rep.sw"sw""rep"。我試圖做的是創建一個if語句,它說if rep.sw = 'sw' then...它將所有RT值放入一個名爲sw的數據幀中,並且如果rep.sw = "rep"它將所有RT值放入一個名爲rep的數據幀中。

任何幫助將不勝感激! :)

一切順利, 佈雷特

編輯:我做了什麼DMT建議它完美地工作!之後我使用了na.omit(sw)命令,這樣我就可以爲每個組運行方法和SD!謝謝大家的幫助!

+1

爲什麼if語句?你可以在一個步驟中基於'rep.sw'中的特定值對數據框進行子集化 – rawr 2014-09-24 23:36:17

+3

正如@rawr所示,你可以很容易地完成'sw < - brettcontrol [brettcontrol $ rep.sw ==「sw」, ]'或'sw < - 子集(brettcontrol,rep.sw ==「sw」)' - 我建議閱讀一個教程網站,例如:http://statmethods.net/management/subset.html – thelatemail 2014-09-24 23:38:59

+0

是的,那對我來說是無知的。謝謝你讓我直截了當。 :) – y3trgfhsfgr 2014-09-25 19:44:48

回答

2

不能確定導致dataframes的形式(無論他們會僅僅是一列?或者他們已經存在?),但這裏是得到你想要的

sw<-brettcontrol$RT[brettcontrol$rep.sw=="sw"] 
rep<-brettcontrol$RT[brettcontrol$rep.sw=="rep"] 

其中SW和代表是值的一種方式矢量,隨意將它們轉換爲數據幀或使用,如你所願

+0

thelatemail得到它4秒!我只是增加$ RT來專門拉這些值 – DMT 2014-09-24 23:39:25

1

嘗試splitlist2env

它將爲全球環境分配兩個新的數據幀,即repsw,NA將在split中刪除。

> ls() 
# [1] "brettcontrol" 
> list2env(split(brettcontrol[-1], brettcontrol$rep.sw), .GlobalEnv) 
> ls() 
# [1] "brettcontrol" "rep"   "sw"   
> rep 
# RT 
# 3 3 
> sw 
# RT 
# 2 2 
# 4 4 
0

嘗試:

swdf = data.frame(brettcontrol[brettcontrol$rep.sw=="sw",][,-1]) 
names(swdf) = 'sw_RT' 
repdf = data.frame(brettcontrol[brettcontrol$rep.sw=="rep",][,-1]) 
names(repdf) = 'rep_RT' 

> swdf 
    sw_RT 
1 NA 
2  2 
3  4 

> repdf 
    rep_RT 
1  NA 
2  3