- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试学习简化我的代码并将多个 data.frames
(>2) 同时合并到一个数据集中。首先,我想计算每个站点的mean
、sd
和n
(每个站点的“个人”数量)四个 PCA 列(Morph_PC1
、Morph_PC2
、...)。其次,将结果合并到单个 data.frame 中。以下是我尝试执行此任务的示例数据和代码。
我意识到可能有一种方法可以生成不需要合并的单个数据集,这会很棒,但我还想知道如何从包中执行merge_all
命令 reshape
工作。
示例数据:
WW_Data <- structure(list(Individual_ID = c("WW_00A_05", "WW_00A_03", "WW_00A_02",
"WW_00A_01", "WW_00A_04", "WW_00A_06", "WW_00A_08", "WW_00A_09",
"WW_00A_07", "WW_00A_10", "WW_09AB_14", "WW_09AB_09", "WW_09AB_13",
"WW_10AD_01", "WW_10AD_09", "WW_10AD_04", "WW_10AD_02", "WW_10AD_03",
"WW_10AD_07", "WW_10AD_08"), Site_Name = c("Alnön", "Alnön",
"Alnön", "Alnön", "Alnön", "Alnön", "Alnön", "Alnön", "Alnön",
"Alnön", "Anjan", "Anjan", "Anjan", "Anjan", "Anjan", "Anjan",
"Anjan", "Anjan", "Anjan", "Anjan"), Morph_PC1 = c(-2.08424433316496,
-1.85413711191957, -1.67227075271696, -1.0486265729884, -0.809415702756541,
-2.81781338129716, -2.08471369525797, -0.183840575363918, -0.753930407169699,
0.0719252507535882, 1.02353521593315, 1.34441686821234, 0.755249445355964,
-0.564426004755035, 0.720689649641627, -0.243471506156601, -0.245437522679261,
-0.69936850894502, 0.9160796809062, 2.2881261039382), Morph_PC2 = c(1.28499189140338,
-0.349487815669147, 0.0148183164519594, -1.55929148726881, -0.681590397005219,
1.21595114750227, 0.116028310510466, 0.187613229042593, -0.923592436104444,
-1.50956083294446, 1.44864057855388, 1.46254159976068, 1.20375736157205,
0.174071006609975, -0.722049893415186, 1.03516327411773, 0.808851776990861,
-0.928263134752596, -0.175511637463994, -0.389421342417043),
Morph_PC3 = c(-0.445087364125436, -0.704903876393893, 0.161983939922481,
1.14604411022773, 0.701508422965674, -0.78133408496171, -0.306619974141955,
1.05643337302175, 0.163868647932456, -0.673344807228353,
-0.337986608605208, -1.01911125040091, 0.258004835638601,
-0.648040419259003, -0.196770002944659, 0.614010430132367,
0.755886614924319, -0.0631407344114064, -1.28178468134549,
0.226362214551239), Morph_PC4 = c(0.0476276463048772, 0.342957387676778,
-0.117383887482525, 0.289881853573214, 0.649579005842321,
0.600433718752986, 0.295294947111845, -0.293754065807853,
-0.43805381119461, 0.520363554131325, -0.393329204345947,
-1.05629143416274, -0.370922397397109, 0.115121369773473,
0.91445926597504, 0.280048079793911, -0.802245210297552,
0.00368405602889952, -0.251898295768711, -0.607995193037228
)), .Names = c("Individual_ID", "Site_Name", "Morph_PC1",
"Morph_PC2", "Morph_PC3", "Morph_PC4"), row.names = c(36L, 37L,
38L, 39L, 40L, 41L, 42L, 43L, 44L, 45L, 137L, 138L, 139L, 140L,
141L, 142L, 143L, 144L, 145L, 146L), class = "data.frame")
代码:
## Calculate statistics for each site ##
WW_PC1_Mean <- subset(melt(tapply(WW_Data$Morph_PC1,list(WW_Data$Site_Name),mean)), value != FALSE)
WW_PC1_SD <- subset(melt(tapply(WW_Data$Morph_PC1,list(WW_Data$Site_Name),sd)), value != FALSE)
WW_PC2_Mean <- subset(melt(tapply(WW_Data$Morph_PC2,list(WW_Data$Site_Name),mean)), value != FALSE)
WW_Site_SD <- subset(melt(tapply(WW_Data$Morph_PC2,list(WW_Data$Site_Name),sd)), value != FALSE)
## merge the all the datasets with one command - THIS FAILS!
WW_Stats <- merge_all(WW_Site_PC1_Mean, WW_Site_PC1_SD, WW_Site_PC2_Mean, by = c("indices"))
编辑:现在我有了一个很好的结果,可以快速将摘要统计信息放入三个文件中,但在尝试 merge_all
时仍然遇到问题(尽管我不确定是否应该使用 merge_recurse
- 不管我得到同样的错误)结果。这是我的尝试:
## Calculate statistics for each site ##
WW_Site_PC_Mean <- ddply(WW_Data, .(Site_Name), numcolwise(mean))
colnames(WW_Site_PC_Mean) <- c("Site_Name", "PC1_Mean", "PC2_Mean", "PC3_Mean", "PC4_Mean")
WW_Site_PC_SD <- ddply(WW_Data, .(Site_Name), numcolwise(sd))
colnames(WW_Site_PC_Mean) <- c("Site_Name", "PC1_SD", "PC2_SD", "PC3_SD", "PC4_SD")
WW_Site_PC_N <- count(WW_Data$Site_Name)
colnames(WW_Site_PC_N) <- c("Site_Name", "PCA_N")
## merge the all the datasets with one command - THIS FAILS!
WW_Stats <- merge_recurse(WW_Site_PC_Mean, WW_Site_PC_SD, WW_Site_PC_N, by = "Site_Name")
错误输出:
Error in fix.by(by.x, x) :
'by' must specify column(s) as numbers, names or logical
最佳答案
留在基础 R 中,您可以使用aggregate
:
WW_Data_mean = aggregate(list(mean = WW_Data[, -c(1, 2)]),
list(Site_Name = WW_Data$Site_Name), mean)
WW_Data_sd = aggregate(list(mean = WW_Data[, -c(1, 2)]),
list(Site_Name = WW_Data$Site_Name), sd)
您的代码有几个错误,也许您需要多“玩”一下合并。
首先,错误。您的示例中失败的行失败的原因是:
data.frame
应该位于列表
中。WW_Site_Name_PC1_Mean
的对象,但该对象的名称为 WW_PC1_Mean
。其次,这里还有一些其他可以尝试的事情。修复您的列名称:
# Fix your column names
# There's probably an easier way to do this, but...
names(WW_PC1_Mean)[2] = "WW_PC1_Mean"
names(WW_PC1_SD)[2] = "WW_PC1_SD"
names(WW_PC2_Mean)[2] = "WW_PC2_Mean"
names(WW_Site_SD)[2] = "WW_Site_SD"
现在,尝试merge_all
。请注意,您需要提供 data.frame
的列表
。 似乎 merge_all
总是只给出两列——但也许我做错了什么。
# Not what you want
merge_all(list(WW_PC1_Mean, WW_PC1_SD,
WW_PC2_Mean, WW_Site_SD), by="indices")
indices WW_PC1_Mean
1 Alnön -1.3237067
2 Anjan 0.5295393
继续进行merge_recurse
。这有效:
# This is what you want
merge_recurse(list(WW_PC1_Mean, WW_PC1_SD,
WW_PC2_Mean, WW_Site_SD), by="indices")
indices WW_PC1_Mean WW_PC1_SD WW_PC2_Mean WW_Site_SD
1 Alnön -1.3237067 0.9252417 -0.220412 0.9912227
2 Anjan 0.5295393 0.9511800 0.391778 0.9112450
您还可以在基础 R 中使用 Reduce
。
# Base R also has a solution
Reduce(function(x, y) merge(x, y, all=TRUE),
list(WW_PC1_Mean, WW_PC1_SD, WW_PC2_Mean, WW_Site_SD))
关于r - 计算汇总统计数据,然后将所有结果合并到单个 data.frame 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11859925/
我需要将文本放在 中在一个 Div 中,在另一个 Div 中,在另一个 Div 中。所以这是它的样子: #document Change PIN
奇怪的事情发生了。 我有一个基本的 html 代码。 html,头部, body 。(因为我收到了一些反对票,这里是完整的代码) 这是我的CSS: html { backgroun
我正在尝试将 Assets 中的一组图像加载到 UICollectionview 中存在的 ImageView 中,但每当我运行应用程序时它都会显示错误。而且也没有显示图像。 我在ViewDidLoa
我需要根据带参数的 perl 脚本的输出更改一些环境变量。在 tcsh 中,我可以使用别名命令来评估 perl 脚本的输出。 tcsh: alias setsdk 'eval `/localhome/
我使用 Windows 身份验证创建了一个新的 Blazor(服务器端)应用程序,并使用 IIS Express 运行它。它将显示一条消息“Hello Domain\User!”来自右上方的以下 Ra
这是我的方法 void login(Event event);我想知道 Kotlin 中应该如何 最佳答案 在 Kotlin 中通配符运算符是 * 。它指示编译器它是未知的,但一旦知道,就不会有其他类
看下面的代码 for story in book if story.title.length < 140 - var story
我正在尝试用 C 语言学习字符串处理。我写了一个程序,它存储了一些音乐轨道,并帮助用户检查他/她想到的歌曲是否存在于存储的轨道中。这是通过要求用户输入一串字符来完成的。然后程序使用 strstr()
我正在学习 sscanf 并遇到如下格式字符串: sscanf("%[^:]:%[^*=]%*[*=]%n",a,b,&c); 我理解 %[^:] 部分意味着扫描直到遇到 ':' 并将其分配给 a。:
def char_check(x,y): if (str(x) in y or x.find(y) > -1) or (str(y) in x or y.find(x) > -1):
我有一种情况,我想将文本文件中的现有行包含到一个新 block 中。 line 1 line 2 line in block line 3 line 4 应该变成 line 1 line 2 line
我有一个新项目,我正在尝试设置 Django 调试工具栏。首先,我尝试了快速设置,它只涉及将 'debug_toolbar' 添加到我的已安装应用程序列表中。有了这个,当我转到我的根 URL 时,调试
在 Matlab 中,如果我有一个函数 f,例如签名是 f(a,b,c),我可以创建一个只有一个变量 b 的函数,它将使用固定的 a=a1 和 c=c1 调用 f: g = @(b) f(a1, b,
我不明白为什么 ForEach 中的元素之间有多余的垂直间距在 VStack 里面在 ScrollView 里面使用 GeometryReader 时渲染自定义水平分隔线。 Scrol
我想知道,是否有关于何时使用 session 和 cookie 的指南或最佳实践? 什么应该和什么不应该存储在其中?谢谢! 最佳答案 这些文档很好地了解了 session cookie 的安全问题以及
我在 scipy/numpy 中有一个 Nx3 矩阵,我想用它制作一个 3 维条形图,其中 X 轴和 Y 轴由矩阵的第一列和第二列的值、高度确定每个条形的 是矩阵中的第三列,条形的数量由 N 确定。
假设我用两种不同的方式初始化信号量 sem_init(&randomsem,0,1) sem_init(&randomsem,0,0) 现在, sem_wait(&randomsem) 在这两种情况下
我怀疑该值如何存储在“WORD”中,因为 PStr 包含实际输出。? 既然Pstr中存储的是小写到大写的字母,那么在printf中如何将其给出为“WORD”。有人可以吗?解释一下? #include
我有一个 3x3 数组: var my_array = [[0,1,2], [3,4,5], [6,7,8]]; 并想获得它的第一个 2
我意识到您可以使用如下方式轻松检查焦点: var hasFocus = true; $(window).blur(function(){ hasFocus = false; }); $(win
我是一名优秀的程序员,十分优秀!