小编dmt*_*dmt的帖子

为数据帧选择多个奇数或偶数列/行

在R中有没有办法选择许多非连续的,即奇数或偶数行/列?

我正在绘制我的主成分分析的负载.我有84行数据如下:x_1 y_1 x_2.....x_42 y_42

目前我正在为x和y加载数据创建数据帧,如下所示:

data.pc = princomp(as.matrix(data))

x.loadings <- data.frame(x=data.pc$loadings[c(1, 3, 5, 7, 9, 11, 13 ,15, 17, 19, 
21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41), 1])

yloadings <- data.frame(y=data.pc$loadings[c(2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 
22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42), 1])
Run Code Online (Sandbox Code Playgroud)

当然有更简单的方法吗?

r pca dataframe

29
推荐指数
4
解决办法
5万
查看次数

xtable用于条件单元格格式化表的重要p值

我正在使用xtable来生成放入Latex的表格,并且想知道是否有一种方法可以对单元格进行条件格式化,以便所有重要的p值都是灰色的?我在TexShop中使用Knitr.

以下是使用一个例子diamonds中的数据GGPLOT2,并运行一个测试TukeyHSD来预测caratcut.

library(ggplot2)
library(xtable)
summary(data.aov <- aov(carat~cut, data = diamonds))
data.hsd<-TukeyHSD(data.aov)
data.hsd.result<-data.frame(data.hsd$cut)
data.hsd.result
Run Code Online (Sandbox Code Playgroud)

然后我可以data.hsd.result进入xtable格式:

xtable(data.hsd.result)
Run Code Online (Sandbox Code Playgroud)

在Latex中,输出如下所示:

                         diff         lwr         upr        p.adj
Good-Fair         -0.19695197 -0.23342631 -0.16047764 0.000000e+00
Very Good-Fair    -0.23975525 -0.27344709 -0.20606342 0.000000e+00
Premium-Fair      -0.15418175 -0.18762721 -0.12073628 0.000000e+00
Ideal-Fair        -0.34329965 -0.37610961 -0.31048970 0.000000e+00
Very Good-Good    -0.04280328 -0.06430194 -0.02130461 5.585171e-07
Premium-Good       0.04277023  0.02165976  0.06388070 3.256208e-07
Ideal-Good        -0.14634768 -0.16643613 -0.12625923 0.000000e+00
Premium-Very Good  0.08557350  0.06974902  0.10139799 0.000000e+00
Ideal-Very Good   -0.10354440 -0.11797729 -0.08911151 0.000000e+00
Ideal-Premium     -0.18911791 -0.20296592 …
Run Code Online (Sandbox Code Playgroud)

formatting conditional latex r xtable

12
推荐指数
1
解决办法
4554
查看次数

Knitr:使用scale包来获取ggplot中的计数

我通常使用scalesR中的包来计算ggplots y轴上的计数数据百分比.但是,当我尝试在knitr中执行此操作时,由于绘图上的百分比符号,我收到错误:

Error in getMetricsFromLatex(TeXMetrics) : TeX was unable to calculate metrics for the following string or character: 0%

我可以使用正常计数轴生存,但更喜欢%.有没有解决的办法?

这是一个可重复的示例(删除+ scale_y_continuous(label=percent)提供了一个可编译的示例):

\documentclass[11pt]{article}
\usepackage{tikz}

\begin{document} 
<<packages, echo=F>>=
    library(ggplot2)
    library(scales)
@
<<chunkopts, echo=F>>=
    opts_chunk$set(echo=F, cache=T,  autodep=T, fig.width = 9/1.5, fig.height=5/1.5,
    fig.align="center", dev="tikz", fig.pos="h!tbp", warning=F, message=F)
    dep_auto()
@
<<mydata>>=
    mydata <- data.frame(
      X = letters[1:10],
      Y = sample(c("yes", "no"), 100, replace = TRUE))
@
<<plot>>=
     ggplot(mydata, aes(X, fill = Y)) +  geom_bar(position = "fill") +
             scale_y_continuous(label=percent)
@
\end{document} …
Run Code Online (Sandbox Code Playgroud)

latex r ggplot2 knitr

3
推荐指数
1
解决办法
390
查看次数

为每个因子组添加单独的 vlines 到 ggplot(变量重要性随机森林的点图)

我正在使用 ggplot2 制作随机森林中六个相关变量重要性结果的点图。我的数据(我已经使用 reshape2 将其转换为长格式)如下所示(我的真实数据集有点大):

Factor    Group    Value
Gender      A      0.000127
Age         A      0.000383
Informant   A     -0.000191
Gender      B     -0.000255
Age         B      0.000389
Informant   B     -0.000312
Gender      C     -0.000285
Age         C      0.000389
Informant   C     -0.000282
Run Code Online (Sandbox Code Playgroud)

我可以像这样制作点图:

ggplot(mydata, aes(x = Value, y = Factor, colour = Group)) + geom_point() 
Run Code Online (Sandbox Code Playgroud)

这是使用不同数据集的示例: 来自 r-bloggers.com/summarising-data-using-dot-plots

然而,我想要画一条线来指示哪些因素对每个组都很重要。正如本指南第 4 页所述,在此类数据集中,“如果变量重要性值高于最低负评分变量的绝对值,则可以将变量视为信息丰富且重要”

我想要一个类似于上面的图,同时每个组都有单独的重要性线。这段代码让我很接近,但没有为每个组做单独的行。有人知道该怎么做吗?我尝试过将美学颜色映射到组,但显然缺少一些东西。

ggplot(mydata, aes(x = Value, y = Factor, colour = Group)) +
geom_point() +geom_vline(data=mydata, aes(xintercept=abs(min(Value)),
colour=Group))
Run Code Online (Sandbox Code Playgroud)

r ggplot2 random-forest

3
推荐指数
1
解决办法
2927
查看次数

在表格中显示 Tukey HSD 成对 p 值

我在我的数据上运行了一个 posthoc Tukey HSD,它有十个因子水平。表格很大,我希望只在成对表格中向读者展示 p 值,将 45 行表格留给附录。

这是一个示例数据集:

set.seed(42)
x <- rnorm(100,1,2)
category <- letters[1:10]
data <- cbind.data.frame(x, category)
summary(data.aov <- aov(x~category, data = data))
data.hsd<-TukeyHSD(data.aov)
data.hsd.result<-data.frame(data.hsd$category)
data.hsd.result
Run Code Online (Sandbox Code Playgroud)

结果是一个 45 行的表。相反,我想要一个表,其中因子水平作为行和列名称,在单元格中具有 p 值,显示两者是否显着不同。Xs 或下划线或任何可能代表重复或不必要的比较。像这样的东西:

         a    b       c       d      e     f      ...   j
    a    X    0.97    1     0.99   0.89   0.99    ...   0.99
    b    X     X    0.99    0.89   0.94   0.92    ...   0.97
    c    X     X      X     0.85   0.93   0.96    ...   0.98
    |   ...   ...    ...     ...   ...    ...     ...   ...
    i …
Run Code Online (Sandbox Code Playgroud)

r presentation p-value

2
推荐指数
1
解决办法
2440
查看次数

ggplot2 堆叠条,将 NA 放在顶部

这里的答案有很多关于在堆积条形图中订购条形部分的重要信息。在尝试了各种替代方案并获得了我想要的大部分订单之后,NA 不断出现在堆栈的底部,这是我不喜欢的。

ggplot(df, aes(x=time, fill=forcats::fct_rev(factor(able, levels=rev(likely))))) + 
  geom_bar() + 
  theme(axis.text.x = element_text(angle = 315, hjust = 0), 
        plot.margin = margin(10, 40, 10, 10))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

x 轴上的 NA 位于末尾,这很棒。总的来说,将 NA 放在最后可能很好。但是对于堆叠的条形图,我认为开始是底部,结束是顶部(因为底部的东西更容易比较。)

(Marimekko 图表可能会更好,但我在尝试让 ggmosaic 和其他各种东西工作一段时间后放弃了。)

编辑:我发现我修改了一些代码来制作 Marimekko 图表(想给予信任,但忘记了我在哪里找到它。)它确实将 NA 放在顶部。

在此处输入图片说明

df %>%
group_by(satisfied, time) %>%
summarise(n = n()) %>%
mutate(x.width = sum(n)) %>%

ggplot(aes(x=satisfied, y=n)) +
geom_col(aes(width=x.width, fill=time),
         colour = "white", size=2, position=position_fill(reverse = T)) +
geom_text(aes(label=n),
           position=position_fill(vjust = 0.5)) +
facet_grid(~ satisfied, space = 'free', scales='free', switch='x') +
#scale_x_discrete(name="a") …
Run Code Online (Sandbox Code Playgroud)

r bar-chart ggplot2 stacked-chart

2
推荐指数
1
解决办法
941
查看次数

ggplot:百分比计算规模上因子组的折线图

假设我想在ggplot中的不同年龄组中绘制问题的"是"答案的百分比.这些年龄组显然是因素,但我希望它们以类似比例的方式显示,所以想要使用折线图.

这是一些数据:

mydata <- data.frame(
    age_group = c("young", "middle", "old"),
    question = sample(c("yes", "no"), 99, replace = TRUE))
mydata$age_group = factor(mydata$age_group,levels(mydata$age_group)[c(3, 1, 2)])  
mydata$question = factor(mydata$question,levels(mydata$question)[c(2,1)]) 
Run Code Online (Sandbox Code Playgroud)

到目前为止,我一直在使用此代码生成堆叠条形图:

 ggplot(mydata, aes(age_group, fill = question)) +  geom_bar(position = "fill") 
Run Code Online (Sandbox Code Playgroud)

我怎么能把它变成一个折线图,只有"是"答案的频率计数?答案中的标记表明产生正确输出的解决方法: 在此输入图像描述

但我希望有一种方法可以在一行代码中自动执行此操作,而不是先创建此摘要表.

r ggplot2

1
推荐指数
1
解决办法
2618
查看次数