首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R,for循环在数据帧列上,并需要从另一个

R,for循环在数据帧列上,并需要从另一个
EN

Stack Overflow用户
提问于 2016-10-09 20:01:19
回答 2查看 68关注 0票数 2

我有以下类型的数据框架:

代码语言:javascript
复制
   Gender FSIQ VIQ PIQ Weight Height MRIcount IQindicator
1  Female  133 132 124    118   64.5   816932           1
2    Male  140 150 124     NA   72.5  1001121           1
3    Male  139 123 150    143   73.3  1038437           1
4    Male  133 129 128    172   68.8   965353           1
5  Female  137 132 134    147   65.0   951545           1
6  Female   99  90 110    146   69.0   928799           0

我的目标是制作两个向量,一个是MRIcount向量,IQindicator是1,IQindicator是0。

我写了以下几封信:

代码语言:javascript
复制
MRI_low <-c()
MRI_high <- c()
for (index in brain_data[,8]){
  if (index = 1){
    MRI_high <- append(MRI_high, MRIcount)
  } else {
    MRI_low <- append(MRI_low, MRIcount)
  }
}

我怎么才能把这事做好?

对于这个例子,我需要:

MRI_low <-c(928799) MRI_high <-c(816932,1001121,1038437,965353,> 951545)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-09 20:10:12

您可以只使用逻辑索引。假设您的数据框架名为df,一个解决方案可能是

代码语言:javascript
复制
MRI_high <- df$MRIcount[df$IQindicator == 1]
MRI_low  <- df$MRIcount[df$IQindicator == 0]

使用$-操作符,您可以访问/提取数据帧的变量。然后,您将看到括号中的逻辑条件。这使得一个向量包含在所述条件成立的情况下为真,如果它不成立,则为FALSE。如果用逻辑向量索引向量,则将值保持为TRUE。

票数 1
EN

Stack Overflow用户

发布于 2016-10-09 20:07:38

假设您的数据框架名为df,这将起作用:

代码语言:javascript
复制
MRI_low <- subset(df, IQindicator == 0)$MRIcount
MRI_high <- subset(df, IQindicator == 1)$MRIcount

有更好的方法来使用一些额外的包来完成它,但是这应该足以满足基本的安装。

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

https://stackoverflow.com/questions/39947964

复制
相关文章

相似问题

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