R:根据主题编号创建新变量

时间:2019-10-16 15:23:46

标签: r dplyr mutate

我在“主题”度量范围内有一些内容,我想为“主题号”分配一个新的“组”变量(例如,应将1到15的主题标记为对照组,将15到30的主题标记为实验组)。

我对每个受试者有36个受试者之间的试验措施。我想创建一个新列,其中每个主题试验都将标记为Exp。或控制试用。

      Subject Condition
1         10      Cont
2         10      Cont
3         10      Cont
4         10      Cont
5         10      Cont
6         10      Cont
7         10      Cont
8         10      Cont
9         10      Cont
10        10       Exp
11        10      Cont
12        10      Cont
13        10      Cont
14        10      Cont
15        10      Cont
16        10      Cont
17        10      Cont
18        10      Cont
19        10      Cont
20        10      Cont
21        10      Cont
22        10      Cont
23        10       Exp
24        10      Cont
25        10      Cont
26        10      Cont
27        10      Cont
28        10      Cont
29        10      Cont
30        10      Cont
31        10      Cont
32        10      Cont
33        10      Cont
34        10      Cont
35        10      Cont
36        10       Exp
37        11       Exp
38        11      Cont
39        11      Cont
40        11      Cont
41        11      Cont
42        11      Cont
43        11      Cont
44        11      Cont
45        11      Cont
46        11      Cont
47        11      Cont
48        11      Cont
49        11      Cont
50        11       Exp
51        11      Cont
52        11      Cont
53        11      Cont
54        11      Cont
55        11      Cont
56        11      Cont
57        11      Cont
58        11      Cont
59        11      Cont
60        11      Cont
61        11      Cont
62        11      Cont
63        11       Exp
64        11      Cont
65        11      Cont
66        11      Cont
67        11      Cont
68        11      Cont
69        11      Cont
70        11      Cont
71        11      Cont
72        11      Cont
73        12      Cont
74        12      Cont
75        12      Cont
76        12      Cont
77        12       Exp
78        12      Cont
79        12      Cont
80        12      Cont
81        12      Cont
82        12      Cont
83        12      Cont
84        12      Cont
85        12      Cont
86        12      Cont
87        12      Cont
88        12      Cont
89        12      Cont
90        12       Exp
91        12      Cont
92        12      Cont
93        12      Cont
94        12      Cont
95        12      Cont
96        12      Cont
97        12      Cont
98        12      Cont
99        12      Cont
100       12      Cont
101       12      Cont
102       12      Cont
103       12       Exp
104       12      Cont
105       12      Cont
106       12      Cont
107       12      Cont
108       12      Cont
109       13      Cont
110       13      Cont
111       13      Cont
112       13      Cont
          ...

我曾经使用过(由Craig建议):

  mutate(Condition = ifelse(Subject == 1:15, "Exp", "Cont"))

但是结果好坏参半。

2 个答案:

答案 0 :(得分:0)

如果没有可复制的数据示例,很难确定要知道什么。但是,如果我正确理解了您的代码,那么mutate的语法会有些不足。这是ifelse语句的一般代码流:

ifelse(逻辑测试,如果为true,则输出,如果为false)

因此,如果您只有30个主题,则无需在检查中指定主题16:30,因为它们是“其他”结果。

res %>%
  mutate(Condition = ifelse(Subject %in% 1:15, "Exp", "Cont"))
  • 您不需要将新变量放在引号中
  • 您确实需要%in%表示正在进行检查

答案 1 :(得分:0)

您已经在SO上问过相同的问题。尝试以下方法:

mutate(Condition = ifelse(between(Subject,1,15), "Exp", "Cont"))