我有以下类型的数据框:
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
我的目标是制作 2 个向量,一个向量的 MRIcount 的 IQindicator 为 1,另一个向量的 IQindicator 为 0
我写了以下内容:
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)
最佳答案
您可以只使用逻辑索引。假设您的数据框的名称是 df,一种解决方案可能是
MRI_high <- df$MRIcount[df$IQindicator == 1]
MRI_low <- df$MRIcount[df$IQindicator == 0]
使用 $ 运算符,您可以访问/提取数据框的变量。然后,您会看到括号中的逻辑条件。这使得向量由 TRUE 组成(如果指定条件成立),如果不成立则由 FALSE 组成。如果使用逻辑向量对向量进行索引,则将值保留为 TRUE。
关于R,for 数据框列上的循环并需要来自其他列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39947964/