创建数据集if语句

时间:2014-09-24 23:21:51

标签: r if-statement dataframe

我是社区的新手,也是我的新朋友。以下是我的数据集的示例部分:

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值都放入名为{{1}}的数据框中。

任何帮助将不胜感激! :)

一切顺利, 布雷特

编辑:我做了DMT建议的,它完美无缺!之后我只使用了na.omit(sw)命令,这样我就可以为每个组运行均值和SD!谢谢大家的帮助!

3 个答案:

答案 0 :(得分:2)

不确定结果数据框的形式(它们是否只是一列?或者它们已经存在?)但这是获取所需值的一种方法

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

其中sw和rep是向量,可以随意将它们转换为数据帧或按照您的意愿使用

答案 1 :(得分:1)

使用split尝试list2env

它会为全球环境分配两个新的数据框repsw,并且会在split中删除NA。

> 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

答案 2 :(得分: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