Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 分析单位换算_R - Fatal编程技术网

R 分析单位换算

R 分析单位换算,r,R,我们正在进行一个社会资本项目,因此我们的数据集有一个个人组织成员的列表。所以每个人都会得到一个数字ID,然后是他们所在的每个组的子ID。因此,分析的单位是他们所在的群体。我们的一个变量是一个三点量表,它是一个群体的类型。听起来很简单 我们想把分析的单位带到个人层面,把群体的类型浓缩成一个变量,表示他们所处的群体有多少种不同的类型 例如,第一个人分为八组。在这些组中,三个是(1),三个是(2),两个是(3)。理想情况下,个体水平变量是3,因为她属于所有三种类型的群体 这至少是可能的吗?我想你要问的

我们正在进行一个社会资本项目,因此我们的数据集有一个个人组织成员的列表。所以每个人都会得到一个数字ID,然后是他们所在的每个组的子ID。因此,分析的单位是他们所在的群体。我们的一个变量是一个三点量表,它是一个群体的类型。听起来很简单

我们想把分析的单位带到个人层面,把群体的类型浓缩成一个变量,表示他们所处的群体有多少种不同的类型

例如,第一个人分为八组。在这些组中,三个是(1),三个是(2),两个是(3)。理想情况下,个体水平变量是3,因为她属于所有三种类型的群体


这至少是可能的吗?

我想你要问的是,是否有可能计算出一个人所属群体的独特类型的数量

如果是的话,那当然是可能的

我无法告诉您如何在R中执行此操作,因为我不太了解R,也不知道您的数据是什么样子的。但是没有理由不可能


这些数据来自数据库吗?如果是这样,那么编写SQL查询来计算所需的值可能比在R中更容易,这里应该有很多人可以为您提供所需的查询。

我想您要问的是,是否有可能计算个人所属的独特类型的组的数量

##simulate data
##individuals
n <- 10
## groups
g <- 5
## group types
gt <- 3
## individuals*group membership
N <- 20
## inidividuals data frame
di <- data.frame(individual=sample(1:n,N,replace=TRUE),
                 group=sample(1:g,N, replace=TRUE))
## groups data frame
dg <- data.frame(group=1:g, type=sample(1:gt,g,replace=TRUE))
## merge
dm <- merge(di,dg)
## order - not necessary, but nice
dm <- dm[order(dm$individual),]
## group type per individual
library(plyr)
dr <- ddply(dm, "individual", function(x) length(unique(x$type)))

> head(dm)
   group individual type
2      2          1    2
8      2          1    2
20     5          1    1
9      3          3    2
12     3          3    2
17     4          3    2

> head(dr)
  individual V1
1          1  2
2          3  1
3          4  2
4          5  1
5          6  1
6          7  1
如果是的话,那当然是可能的

我无法告诉您如何在R中执行此操作,因为我不太了解R,也不知道您的数据是什么样子的。但是没有理由不可能

这些数据来自数据库吗?如果是这样,那么编写SQL查询来计算所需的值可能比在R中进行更容易。如果您描述了您的模式,这里应该有很多人可以为您提供所需的查询。

##模拟数据
##simulate data
##individuals
n <- 10
## groups
g <- 5
## group types
gt <- 3
## individuals*group membership
N <- 20
## inidividuals data frame
di <- data.frame(individual=sample(1:n,N,replace=TRUE),
                 group=sample(1:g,N, replace=TRUE))
## groups data frame
dg <- data.frame(group=1:g, type=sample(1:gt,g,replace=TRUE))
## merge
dm <- merge(di,dg)
## order - not necessary, but nice
dm <- dm[order(dm$individual),]
## group type per individual
library(plyr)
dr <- ddply(dm, "individual", function(x) length(unique(x$type)))

> head(dm)
   group individual type
2      2          1    2
8      2          1    2
20     5          1    1
9      3          3    2
12     3          3    2
17     4          3    2

> head(dr)
  individual V1
1          1  2
2          3  1
3          4  2
4          5  1
5          6  1
6          7  1
##个人 模拟数据 ##个人
n添加实际样本数据将得到更好的答案。我可以想出3种似乎显而易见的方法,但答案取决于数据是如何形成的。您的每一行数据都是一个人吗?如果是,是否有一个用于subID的If字段?或者每一行都是person+subid的组合。爱德华多,你是一个非常好的堆栈溢出公民。添加实际的样本数据会得到更好的答案。我可以想出3种似乎显而易见的方法,但答案取决于数据是如何形成的。您的每一行数据都是一个人吗?如果是,是否有一个用于subID的If字段?或者每一行都是person+subid的组合。但是看看我关于如何生成假数据的答案,也许是改变它以适应你拥有的数据。爱德华多,你是一个非常好的堆栈溢出公民。