我已经好几次了,但是因为我使用R已经有一段时间了,显然我错过了一些东西。
我有一个名为Mean_A_trial_long
的长格式data.frame,其格式如下:
> head(Mean_A_trial_long,30)
Trial TrialType Block variable value
1 101 Opaque Block2 RT 961.6000
2 102 Opaque Block2 RT 713.5000
3 103 Opaque Block2 RT 714.4444
4 104 Opaque Block2 RT 757.8750
5 105 Opaque Block2 RT 992.8000
6 106 Opaque Block2 RT 1114.7000
7 107 Opaque Block2 RT 770.6250
8 108 Opaque Block2 RT 835.5714
9 109 Opaque Block2 RT 693.6667
10 110 Opaque Block2 RT 816.5714
11 111 Opaque Block2 RT 748.2000
12 112 Opaque Block2 RT 789.3333
13 113 Opaque Block2 RT 848.8000
14 114 Opaque Block2 RT 883.3077
15 115 Opaque Block2 RT 933.8333
16 116 Opaque Block2 RT 879.2000
17 117 Opaque Block2 RT 802.5000
18 118 Opaque Block2 RT 899.8750
19 119 Opaque Block2 RT 821.2000
20 120 Opaque Block2 RT 820.1250
21 121 Opaque Block2 RT 755.6250
22 122 Opaque Block2 RT 900.1667
23 123 Opaque Block2 RT 840.5556
24 124 Opaque Block2 RT 755.4000
25 125 Opaque Block2 RT 657.4000
26 126 Opaque Block2 RT 1112.1429
27 127 Opaque Block2 RT 972.6667
28 128 Opaque Block2 RT 765.1667
29 129 Opaque Block2 RT 959.0000
30 130 Opaque Block2 RT 844.1429
至关重要的是,TrialType
是一个有两个级别的因素:Opaque
和Transparent
。对于这两个级别中的每个级别,trial
列中有两个相同编号的实例。因此,trial
列中的Opaque
列为TrialType
,Transparent
为TrialType
,然后Opaque
中的Transparent
再次从101变为200。它一直到试用500为止。
我想要做的是提取两个载体,每个载体有10个试验,一个对应于First10Transparent <- Mean_A_trial_long$value[Mean_A_trial_long$TrialType == "Transparent" & (Mean_A_trial_long$Trial > 100 & Mean_A_trial_long$trial < 111)]
条件的前10个试验,一个对应{{1}}条件的前10个试验。
这就是我的尝试:
{{1}}
但这给了我一个名为First10Transparent的空对象,上面没有任何内容......
非常感谢任何关于我遗失/做错的线索。
答案 0 :(得分:2)
嗯,这很令人尴尬......而且还会告诉你细节的重要性。
错误的是,在索引Trial
列时,我第一次使用大写字母T(corect)编写,但第二次写入小写字母t(错误)。这就是我得到一个空对象的原因。
在两条线上将试验改为大写T给了我理想的结果:
First10Transparent <- Mean_A_trial_long$value[Mean_A_trial_long$TrialType == "Transparent" & (Mean_A_trial_long$Trial > 100 & Mean_A_trial_long$Trial < 111)]
> First10Transparent
[1] 887.8889 797.1000 742.8000 660.1667 892.5556 1165.5000 644.8333 650.5714 681.1250 756.8571
答案 1 :(得分:1)
使用with()
Mean_A_trial_long$value[with(Mean_A_trial_long,TrialType == "Opaque" & Trial > 100 & Trial < 111)]
Mean_A_trial_long$value[with(Mean_A_trial_long,TrialType == "Transparent" & Trial > 200 & Trial < 211)]
我已修改您的代码以包含with()
语句。 With
有几个优点,因为:
使用您的代码
您还可以使用原始代码创建此声明:
Mean_A_trial_long$value[Mean_A_trial_long$TrialType == "Transparent" & (Mean_A_trial_long$Trial > 100 & Mean_A_trial_long$trial < 111)]
答案 2 :(得分:0)
这将为您提供所需的子集。
First10Transparent <- Mean_A_trial_long[as.character(Mean_A_trial_long$TrialType) == "Transparent" & (Mean_A_trial_long$Trial > 100 & Mean_A_trial_long$trial < 111),]