假设,我有一个数据帧:
xyz <- c(1,2,3,4,5,6)
zyx <- c("A", "B", "C", "A", "B", "C")
zyx <- factor(zyx)
myframe <- data.frame(xyz, zyx)现在我想计算zyx变量的constrast。我使用:
contrasts(myframe$zyx) <- contr.treatment(3, base=3)如果我现在查看变量myframe$zyx,我会得到:
[1] A B C A B C
attr(,"contrasts")
1 2
A 1 0
B 0 1
C 0 0
Levels: A B C但我不希望将对数命名为"1“或"2",而是类似于"contr_A_vs_C”和"contr_B_vs_C“。
你有什么想法吗?
编辑:
好吧,这似乎不是一个简单的问题。让我更直截了当地说:
在对比函数中是否有一个"name“命令,可以解决?
例如,如果您进行线性回归,您可以通过直接命令添加模型估计,例如,如果您想要使值für R平方,您可以键入:
rsquared <- regressionmodel$r.squared也许,在对比中有相似的东西,比如
dataframe$contrast.names <- ...发布于 2013-11-10 22:12:07
您引用的matrix将存储为您指定的列的attribute。您可以通过如下方式直接访问:
attr(myframe$zyx, "contrasts")
# 1 2
# A 1 0
# B 0 1
# C 0 0因此,您可以像往常一样使用colnames (但我不知道这是否会破坏以后可能使用默认输出值contrasts或contr.treatment的任何东西)。
colnames(attr(myframe$zyx, "contrasts")) <-
c("contr_A_vs_C", "contr_B_vs_C")
myframe$zyx
# [1] A B C A B C
# attr(,"contrasts")
# contr_A_vs_C contr_B_vs_C
# A 1 0
# B 0 1
# C 0 0
# Levels: A B C发布于 2022-01-17 15:51:10
contr.treatment(n=3, base=3)的n参数也可以接受一个名称列表。我对此很满意
contrasts(myframe$zyx) <- contr.treatment(n=levels(myframe$zyx), base=3)
contrasts(myframe$zyx)
# A B
# A 1 0
# B 0 1
# C 0 0或者,如果您喜欢的话
contrasts(myframe$zyx) <- contr.treatment(n=c("contr_A_vs_C", "contr_B_vs_C", "none"), base=3)
contrasts(myframe$zyx)
# contr_A_vs_C contr_B_vs_C
# A 1 0
# B 0 1
# C 0 0https://stackoverflow.com/questions/18508599
复制相似问题