如何在R中将一个级别隔离为自己的变量?

时间:2018-02-21 20:17:34

标签: r names levels

在数据集“PlantGrowth”中,只有两个变量,即组和权重。

Scanner scn = new Scanner(System.in);
int[] scores = new int[] {0,0,0,0,0};
String[] names = new String[] {"Art", "Bob", "Cal", "Dan", "Eli"};
final String PROMPT = "Enter points scored by ";

// a loop to ask for input
// you can treat these loops as saying "for each name in the names array, do this..."
for(int i = 0 ; i < names.length ; i++) {
    // in the first iteration "names[i]" will be "Art", second iteration
    // will be "Bob", and so on
    System.out.print(PROMPT + names[i] + " >>>");
    // set the corresponding score
    scores[i] = scn.nextInt();
}

// another loop to print a bar chart
for(int i = 0 ; i < names.length ; i++) {
    System.out.print(names[i] + " ");

    for (int y = 1; y <= scores[i]; y++) {
        System.out.print(" *");

    }
    System.out.print("\n");
}

变量“group”3级

data("PlantGrowth")
names(PlantGrowth)
[1] "weight" "group" 

我希望能够调用变量“group”的控件和处理,但我无法弄清楚如何将它们分成自己的变量。我已将级别重命名为:

levels(PlantGrowth$group) 
[1] "ctrl" "trt1" "trt2"

但是现在我想能够分析对治疗1和2的控制。我尝试了很多不同的事情:

levels(PlantGrowth$group) <- c("control","treatment1","treatment2")

显然这是不正确的,但谢谢!

3 个答案:

答案 0 :(得分:1)

这是你想要的吗? (使用filter中的dplyr

control <- PlantGrowth %>% filter(group == "control")

如果你愿意,你也可以通过&#34; group&#34;分割整个数据框,如下所示:

split(PlantGrowth, PlantGrowth$group)

答案 1 :(得分:0)

当然,大多数分析函数都可以使用组因子来分割数据处理,而无需拆分数据集吗?

不确定您想做什么比较,但例如您的数据的方差分析:

ANOVA <- aov(weight ~ group, data=PlantGrowth)

该功能使用您的组变量检查重量差异。

类似地,在绘图时,PlantGrowth$group可以应用于图表上的适当点的颜色或形状。

答案 2 :(得分:0)

如果您想为每个组运行单独的模型并比较结果,您可以使用以下内容:

by(data = PlantGrowth, INDICES = PlantGrowth$group, FUN = summary)

或者你也可以构建一个回归矩阵并使用它们:

model.matrix(~PlantGrowth$group)