在 R 中,某些函数仅适用于 a data.frame,而其他函数仅适用于 atibble或 a matrix。
使用as.data.frame或转换我的数据as.matrix通常可以解决这个问题,但我想知道这三者有何不同?
使用 ToothGrowth 数据集(内置于 R 中),我使用了以下代码。
library(ggplot2)
library(tidyverse)
library(ggpubr)
p <- ggboxplot(ToothGrowth, x = "supp", y = "len",
color = "supp", palette = "jco",
add = "jitter",
facet.by = "dose", short.panel.labs = FALSE)
p + stat_compare_means(label = "p.format")
Run Code Online (Sandbox Code Playgroud)
现在,我希望 p 值有 4 位数字。我研究了以前的类似帖子,然后尝试了以下两个选项
p + stat_compare_means(label = "p.format", digits = 4)
p + stat_compare_means(label = "p.format", round(p.format, 4))
Run Code Online (Sandbox Code Playgroud)
不幸的是,两者都不起作用。可能有人有解决方案吗?谢谢你。
我有data.frame df1(见下面的代码)。我想把它转换成什么df2样子(见下面的代码)。
也许这可以用reshape cast或来完成reverse melt?但我不明白这些功能。请问有人可以帮忙吗?
df1 <- data.frame(
stringsAsFactors = FALSE,
sample = c("a","a","a",
"a","b","c","c","c","c","c","c","c","c",
"d","d","e","e","e","g","g"),
LETTER = c("P","R","V",
"Y","Q","Q","R","S","T","U","W","X","Z",
"Q","X","Q","V","X","Q","T")
)
df2 <- data.frame(
stringsAsFactors = FALSE,
sample = c("a", "b", "c", "d", "e", "f", "g"),
P = c(1L, 0L, 0L, 0L, 0L, 0L, 0L),
Q = c(0L, 1L, 1L, 1L, 1L, 0L, 1L),
R = c(1L, 0L, 1L, 0L, 0L, 0L, 0L),
S = c(0L, 0L, 1L, 0L, 0L, 0L, …Run Code Online (Sandbox Code Playgroud) 我有两个data.frames:df和weights(下面的代码)。
df 看起来像这样:
id a b d EE f
1 this 0.23421153 -0.02324956 0.5457353 0.73068586 0.5642554
2 is 0.28378641 0.36346241 1.0190496 1.97715019 -1.190179
3 an -0.04372133 0.07412557 -0.4510299 1.8442713 -0.5301328
4 example -0.18139887 0.10404329 -1.0871962 1.46920108 0.4685703
5 data.frame 0.24235498 -0.1501064 -1.1183967 0.22884407 0.4272259
6 for -0.72718239 0.16337997 1.2635683 0.44206945 0.7303647
7 stackoverflow 0.25203942 -0.1772715 -0.3371532 -0.29167792 -0.7065494
8 please -0.11047364 -0.06631552 0.4342659 -1.49584522 0.2837016
9 help -0.1136639 0.22414253 0.4284864 1.59096047 0.2915938
10 me …Run Code Online (Sandbox Code Playgroud) 如果这是一个重复的问题,我提前道歉。
如何更改data.frameR中a中单行的名称?例如,在mtcars数据集中,如何重命名行Merc 280并调用它Some Mercedes?
所有其他帖子似乎都回答了如何一次替换所有行名称。
谢谢你。
我想在 R 中使用一个非常长的向量,但似乎当我创建一个向量时,向量中的最大长度/值的数量是 349。请参阅下面的vector1和代码vector2。我可以vector1毫无问题地创建 349 个值,但是vector2包含 350 个值的 会+在下一行抛出异常,就好像我忘记使用结束符"或一样)。
我读过这篇文章: Max Length for a Vector in R,但这与我的经验完全不同。
我错过了什么吗?有人可以帮忙吗?
代码
vector1 <- c("value1", "value2", "value3", "value4", "value5", "value6", "value7", "value8", "value9", "value10", "value11", "value12", "value13", "value14", "value15", "value16", "value17", "value18", "value19", "value20", "value21", "value22", "value23", "value24", "value25", "value26", "value27", "value28", "value29", "value30", "value31", "value32", "value33", "value34", "value35", "value36", "value37", "value38", "value39", "value40", "value41", "value42", "value43", "value44", …Run Code Online (Sandbox Code Playgroud) 我正在使用以下代码,它计算每个子组的 z 分数。我想在最后添加一列,对 z 分数进行求和,从而对以“_zscore”结尾的所有列中的所有值进行逐行求和。我如何具体选择这些列?
(请注意,我的真实数据有更多列,因此我希望在列名称中专门选择“_zscore”。)
library(dplyr)
set.seed(12345)
df1 = data.frame(a=c(rep("a",8), rep("b",5), rep("c",7), rep("d",10)),
b=rnorm(30, 6, 2),
c=rnorm(30, 12, 3.5),
d=rnorm(30, 8, 3)
)
df1_z <- df1 %>%
group_by(a) %>%
mutate(across(b:d, list(zscore = ~as.numeric(scale(.)))))
Run Code Online (Sandbox Code Playgroud) 我有一个data.frame dfP与一列Spearman_p包含的p值(数字数据)。我想用它们代替p值摘要星号。我使用以下代码:
dfP$Spearman_p[dfP$Spearman_p < 0.0001] <- "****"
dfP$Spearman_p[dfP$Spearman_p < 0.001] <- "***"
dfP$Spearman_p[dfP$Spearman_p < 0.01] <- "**"
dfP$Spearman_p[dfP$Spearman_p < 0.05] <- "*"
dfP$Spearman_p[dfP$Spearman_p > 0.05] <- "ns"
Run Code Online (Sandbox Code Playgroud)
但是,这会将所有 <0.05的p值(<0.01的那些)也更改为*(一星)。
我怀疑R在后续步骤中将****视为数字<0.05。那是对的吗?如果是这样,请问我该如何规避?
谢谢。
我有以下代码,并且想将列选择到新的data.frame.
library(dplyr)
df = data.frame(
Manhattan=c(1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0),
Brooklyn=c(0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0),
The_Bronx=c(1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0),
Staten_Island=c(0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, …Run Code Online (Sandbox Code Playgroud)