我在R中被困在下面的问题上,我希望有人能快速解决。
我有两组数据,A和B,其中A包含控制组的数据,B包含病例组的数据。对于每一组,我都有相同变量的度量。在A和B中是子组--在某些情况下,它们是A和B之间的配对--假设它们是兄弟姐妹,其中一个或多个可以是一个案例,一个或多个是对照。
数据如下所示:
集A:
Source Area group pch pch2 col col2 group2
R1-1 1983447 1 0 16 1 1 1
R1-3 1400362 1 0 16 1 1 1
R3-4 2834393 2 1 16 2 2 1
R4-2 2232820 3 2 16 3 3 1
R4-5 1713796 3 2 16 3 3 1
R4-6 1525740 3 2 16 3 3 1
R4-7 1182300 3 2 16 3 3 1 集B:
Source Area group pch pch2 col col2 group2
R1-2 1246124 1 0 16 1 1 2
R3-1 1627610 2 1 16 2 2 2
R3-2 1401600 2 1 16 2 2 2
R4-1 1367146 3 2 16 3 3 2
R4-3 1764125 3 2 16 3 3 2
R4-4 1299864 3 2 16 3 3 2源是ID,Area是感兴趣的变量,group是组,其余是这里不感兴趣的附加变量。
我想要做的是计算集合B中每一个个体的相对面积--即相对于集合A中的兄弟姐妹的平均面积。我希望这个值在集合B中以独立列的形式出现(在下面的样本relArea下)。因此,输出将如下所示:
产出(B组):
Source Area group relArea pch pch2 col col2 group2
R1-2 1246124 1 0.736521476 0 16 1 1 2
R3-1 1627610 2 0.574235824 1 16 2 2 2
R3-2 1401600 2 0.494497411 1 16 2 2 2
R4-1 1367146 3 0.821768097 2 16 3 3 2
R4-3 1764125 3 1.06038539 2 16 3 3 2
R4-4 1299864 3 0.781326037 2 16 3 3 2最后,如果集合B中的个人在集合A中没有兄弟姐妹,那么他的relArea值将是相对于所有控件的平均面积(即集合A中的所有测量值)的面积。
如果能在这方面提供任何帮助,我将不胜感激。
谢谢,
比约恩
发布于 2014-02-10 17:47:11
您可以用aggregate计算A组中每组的平均面积,然后添加新列:
seta = read.table(text="Source Area group pch pch2 col col2 group2
R1-1 1983447 1 0 16 1 1 1
R1-3 1400362 1 0 16 1 1 1
R3-4 2834393 2 1 16 2 2 1
R4-2 2232820 3 2 16 3 3 1
R4-5 1713796 3 2 16 3 3 1
R4-6 1525740 3 2 16 3 3 1
R4-7 1182300 3 2 16 3 3 1 ", header=T)
setb = read.table(text="Source Area group pch pch2 col col2 group2
R1-2 1246124 1 0 16 1 1 2
R3-1 1627610 2 1 16 2 2 2
R3-2 1401600 2 1 16 2 2 2
R4-1 1367146 3 2 16 3 3 2
R4-3 1764125 3 2 16 3 3 2
R4-4 1299864 3 2 16 3 3 2", header=T)
grouped.area = aggregate(seta$Area, by=list(group=seta$group), mean)
setb$relArea = setb$Area / grouped.area$x[match(setb$group, grouped.area$group)]
setb$relArea
# [1] 0.7365215 0.5742358 0.4944974 0.8217681 1.0603854 0.7813260https://stackoverflow.com/questions/21684135
复制相似问题