首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何构造数据集来运行PCA?

如何构造数据集来运行PCA?
EN

Stack Overflow用户
提问于 2015-11-07 08:38:45
回答 1查看 79关注 0票数 0

基本上,我的问题是我想运行PCA分析,但我的数据结构不正确。希望这张图片能让你明白我的意思:

代码语言:javascript
运行
复制
trial.one.two <- na.omit(trial.one.one)
head(trial.one.two)
                 v79             v81                v82 Q.One Q.Two Q.Three
2 Disagrees a little Agrees a little Disagrees a little     3     2       3
3       Agrees a lot    Agrees a lot Disagrees a little     1     1       3
4    Agrees a little Disagrees a lot    Disagrees a lot     2     4       4
5       Agrees a lot    Agrees a lot    Disagrees a lot     1     1       4
6    Agrees a little    Agrees a lot    Agrees a little     2     1       2
8       Agrees a lot Agrees a little       Agrees a lot     1     2       1

我正在处理的数据是在5000+个人中进行的一项调查,我想知道有多少人回答了例如“非常同意”:2253,“有点同意”:2005等。我需要按以下方式分配数据:

1“很同意”2“同意一点”3“不同意一点”4“不同意很多”

其中1是组件1,2是组件2,依此类推,基本上我想运行PCA。

有没有人能指导我该做什么?

-更新

在我实现之后:

代码语言:javascript
运行
复制
convert.factor <- function(val){
  if(val == "Agrees a lot"){
    return(1)
  } else if(val == "Agrees a little") {
    return(2)
  } else if(val == "Disagrees a little") {
    return(3)
  } else if(val == "Disagrees a lot") {
    return(4)
  }
}

trial.one.two$v79 <- sapply(trial.one.two$v79, convert.factor)
trial.one.two$v81 <- sapply(trial.one.two$v81, convert.factor)
trial.one.two$v82 <- sapply(trial.one.two$v82, convert.factor)

head(trial.one.two)
  v79 v81 v82 Q.One Q.Two Q.Three
2   3   2   3     3     2       3
3   1   1   3     1     1       3
4   2   4   4     2     4       4
5   1   1   4     1     1       4
6   2   1   2     2     1       2
8   1   2   1     1     2       1
EN

回答 1

Stack Overflow用户

发布于 2015-11-07 09:08:08

您可以按照下面的思路做一些事情

代码语言:javascript
运行
复制
convert.factor <- function(val){
  if(val == "Agrees a lot"){
    return(1)
  } else if(val == "Agrees a little") {
    return(2)
  } else if(val == "Disagrees a little") {
    return(3)
  } else if(val == "Disagrees a lot") {
    return(4)
  }
}

trial.one.two$v79 <- sapply(trial.one.two$v79, convert.factor)
trial.one.two$v81 <- sapply(trial.one.two$v81, convert.factor)
trial.one.two$v82 <- sapply(trial.one.two$v82, convert.factor)

或者,如果你只是在寻找人们回答每个类别的频率,你可以这样做:

代码语言:javascript
运行
复制
table(trial.one.two$v79)

请注意,在这种情况下,没有理由首先转换变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33577769

复制
相关文章

相似问题

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