首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R-如何在数据帧中命名对比

R-如何在数据帧中命名对比
EN

Stack Overflow用户
提问于 2013-08-29 18:34:23
回答 2查看 1.1K关注 0票数 3

假设,我有一个数据帧:

代码语言:javascript
复制
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。我使用:

代码语言:javascript
复制
contrasts(myframe$zyx) <- contr.treatment(3, base=3)

如果我现在查看变量myframe$zyx,我会得到:

代码语言:javascript
复制
[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平方,您可以键入:

代码语言:javascript
复制
rsquared <- regressionmodel$r.squared

也许,在对比中有相似的东西,比如

代码语言:javascript
复制
dataframe$contrast.names <- ...
EN

回答 2

Stack Overflow用户

发布于 2013-11-10 22:12:07

您引用的matrix将存储为您指定的列的attribute。您可以通过如下方式直接访问:

代码语言:javascript
复制
attr(myframe$zyx, "contrasts")
#   1 2
# A 1 0
# B 0 1
# C 0 0

因此,您可以像往常一样使用colnames (但我不知道这是否会破坏以后可能使用默认输出值contrastscontr.treatment的任何东西)。

代码语言:javascript
复制
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
票数 5
EN

Stack Overflow用户

发布于 2022-01-17 15:51:10

contr.treatment(n=3, base=3)n参数也可以接受一个名称列表。我对此很满意

代码语言:javascript
复制
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

或者,如果您喜欢的话

代码语言:javascript
复制
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            0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18508599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档