我是社区的新手,也是我的新朋友。以下是我的数据集的示例部分:
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!谢谢大家的帮助!答案 0 :(得分:2)
不确定结果数据框的形式(它们是否只是一列?或者它们已经存在?)但这是获取所需值的一种方法
sw<-brettcontrol$RT[brettcontrol$rep.sw=="sw"]
rep<-brettcontrol$RT[brettcontrol$rep.sw=="rep"]
其中sw和rep是向量,可以随意将它们转换为数据帧或按照您的意愿使用
答案 1 :(得分:1)
使用split
尝试list2env
。
它会为全球环境分配两个新的数据框rep
和sw
,并且会在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