我有一个如下所示的数据集:
id samediff factor value
1 S give 3
1 S impact 4
2 S give 2
2 S impact 5
3 D give 1
3 D impact 4
4 D give 3
4 D impact 5
Run Code Online (Sandbox Code Playgroud)
我想执行几个 t.tests 来比较 S (samediff) 条件中每个因素的均值与 D (samediff) 条件中相同因素的均值。
我知道我可以通过以下方式做到这一点:
dfgive<-filter(df, factor == "give")
t.test(value~samediff, dfgive)
dfimpact<-filter(df, factor == "impact")
t.test(value~samediff, dfimpact)
Run Code Online (Sandbox Code Playgroud)
有没有办法在更少的行中执行几个 t.tests?在实际数据集中,有比这里包含的更多的因素。我希望能够进行所有必要的 t.tests,而无需以我上面显示的相同方式创建单独的数据帧。
我在 R 中有一个数据框,如下所示:
a b c condition
1 4 2 acap
2 3 1 acap
2 4 3 acap
5 6 8 ncap
5 7 6 ncap
8 7 6 ncap
Run Code Online (Sandbox Code Playgroud)
我正在尝试重新编码 a、b 和 c 列中的值以用于条件 ncap(以及此处未显示的 2 个其他条件),同时单独保留 acap 的值。
以下代码适用于前 3 列。我试图弄清楚如何将它仅应用于我按条件指定的行,同时将所有内容保留在同一数据框中。
df = df %>%
mutate_at(vars(a:c), function(x)
case_when x == 5 ~ 1, x == 6 ~ 2, x == 7 ~ 3, x == 8 ~ 4)
Run Code Online (Sandbox Code Playgroud)
这是预期的输出。
a b c condition
1 4 2 acap …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个单独的列,其中包含其他两列的最小值。当triad等于“triad_ah”时,我想获得以下两列的最小值。
我的数据如下所示:
triad convince_animals convince_health
triad_ah 4 5
not_triad_ah 2 3
Run Code Online (Sandbox Code Playgroud)
这是我想要的输出:
triad convince_animals convince_health convince_min
triad_ah 4 5 4
not_triad_ah 2 3 99
Run Code Online (Sandbox Code Playgroud)
我通过两种方式尝试过这一点。我认为使用 case_when 的方式可能会更简洁。我还包含了我收到的每个错误消息。
尝试1
dflong$convince_min <- dflong %>%
case_when(
.$triad == "triad_ah" ~ min(.$convince_animals, .$convince_health),
.$triad == TRUE ~ 99
)
Error: Case 1 (`.`) must be a two-sided formula, not a `data.frame` object.
Run Code Online (Sandbox Code Playgroud)
尝试2
dflong$convince_min <- dflong %>%
ifelse(dflong$triad == "triad_ah", min(dflong$convince_animals, dflong$convince_health), 99)
Error in ifelse(., dflong$triad == "triad_ah", min(dflong$convince_animals, : unused argument (99) …Run Code Online (Sandbox Code Playgroud) 我正在尝试可视化包含 87 个变量的 PCA。
prc <-prcomp(df[,1:87], center = TRUE, scale. = TRUE)
ggbiplot(prc, labels = rownames(df[,1:87]), var.axes = TRUE)
Run Code Online (Sandbox Code Playgroud)
当我创建双图时,许多向量相互重叠,导致无法读取标签。我想知道是否有什么方法可以一次只显示一些标签。例如,我认为如果我可以创建几个单独的双图,每个双图仅显示向量上标签的子集,那将会很有用。
这个问题似乎密切相关,但我不知道它是否转换为最新版本的ggbiplot。我也不知道如何修改原来的功能。
我最近安装了 tidyverse。但是,我在调用它时收到以下错误消息。
\n\n> library(tidyverse)\nError: package or namespace load failed for \xe2\x80\x98tidyverse\xe2\x80\x99 in loadNamespace(i, \nc(lib.loc, .libPaths()), versionCheck = vI[[i]]):\n there is no package called \xe2\x80\x98rlang\xe2\x80\x99\nIn addition: Warning message:\npackage \xe2\x80\x98tidyverse\xe2\x80\x99 was built under R version 3.4.4 \nRun Code Online (Sandbox Code Playgroud)\n\n不知道为什么rlang没有下载。我试图通过单独下载 rlang 来解决这个问题。在此之前,我进入我的文件并删除了已经存在的 rlang 版本。尽管如此,我还是收到了以下消息:
\n\n> install.packages("rlang")\nInstalling package into \xe2\x80\x98C:/Users/mbesw/Documents/R/win-library/3.4\xe2\x80\x99\n(as \xe2\x80\x98lib\xe2\x80\x99 is unspecified)\ntrying URL \'https://cran.rstudio.com/bin/windows/contrib/3.4/rlang_0.2.0.zip\'\nContent type \'application/zip\' length 817350 bytes (798 KB)\ndownloaded 798 KB\n\npackage \xe2\x80\x98rlang\xe2\x80\x99 successfully unpacked and MD5 sums checked\nWarning in install.packages :\n cannot remove prior installation of package \xe2\x80\x98rlang\xe2\x80\x99\n\nThe downloaded …Run Code Online (Sandbox Code Playgroud) r ×5
tidyverse ×4
if-statement ×2
biplot ×1
dplyr ×1
ggbiplot ×1
ggplot2 ×1
rlang ×1
statistics ×1
tidyr ×1