我试图在一个大数据框中按行计算二进制字符结果:
V1 V2 V3 V4 V5
Loss Loss Loss Loss Loss
Loss Loss Win Win Loss
Loss Loss Loss Loss Loss
Run Code Online (Sandbox Code Playgroud)
我需要知道的是按行输赢的频率.这只是一个简短的例子(大型模拟输出的片段),但对于第1行,在五次模拟中,我有五次损失,第二行三次丢失,两次获胜等.
我希望生成一个单独的表来显示按行获胜/失败的频率,或者,如果这不起作用,则添加两个新列:一个为每行提供"Win"和"Loss"的数量.
每一行都是不同的情况,每一列都是该案例的复制品.这显示为具有两个级别"损失""赢"的因素的数据框.
我想在分组后汇总时,计算另一个因素的特定级别的数量。
在下面的工作示例中,我想计算"male"每个组中的级别数。我已经尝试了很多计数、计数等方法,但找不到一种简单明了的方法来做到这一点。
df <- data.frame(Group=replicate(20, sample(c("A","B"), 1)),
Value=rnorm(20),
Factor=replicate(20, sample(c("male","female"), 1)))
df %>%
group_by(Group) %>%
summarize(Value = mean(Value),
n_male = ???)
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
有没有办法指示dplyr使用summarise_each规范first和na.rm=TRUE?
我有一个包含许多NA和数值的数据帧.A列是患者ID.我想根据患者ID通过取每个变量的第一个非NA来总结数据帧.这没用
`summarised_df <- df %>% group_by(patient_ID) %>%
summarise_each(funs(first(., na.rm=TRUE)))`
Run Code Online (Sandbox Code Playgroud)
提前致谢!
在这里,您可以找到数据的示例.但是,原始数据包括数百个不同的变量.
有谁知道如何使用 dplyr 来计算 和 的平均值之间的差异,some_var == TRUE并按some_var == FALSE第三个变量分组?
例如,给出以下示例数据框:
library('dplyr')
dat <- iris %>%
mutate(wide=Sepal.Width > 3) %>%
group_by(Species, wide) %>%
summarize(mean_width=mean(Sepal.Width))
dat
# A tibble: 6 x 3
# Groups: Species [?]
Species wide mean_width
<fctr> <lgl> <dbl>
1 setosa FALSE 2.900000
2 setosa TRUE 3.528571
3 versicolor FALSE 2.688095
4 versicolor TRUE 3.200000
5 virginica FALSE 2.800000
6 virginica TRUE 3.311765
Run Code Online (Sandbox Code Playgroud)
有谁知道一种方法来派生一个新的数据框,其差异为wide == TRUE和wide == FALSE,按物种?
这可以使用几个语句来完成:
false_vals <- …Run Code Online (Sandbox Code Playgroud) 我正在使用summarizeR 中 dplyr 包中的函数从表中总结组均值。我想使用存储在另一个变量中的列名字符串动态执行此操作。
以下是“正常”方式,当然可以工作:
myTibble <- group_by( iris, Species)
summarise( myTibble, avg = mean( Sepal.Length))
# A tibble: 3 x 2
Species avg
<fct> <dbl>
1 setosa 5.01
2 versicolor 5.94
3 virginica 6.59
Run Code Online (Sandbox Code Playgroud)
但是,我想做这样的事情:
myTibble <- group_by( iris, Species)
colOfInterest <- "Sepal.Length"
summarise( myTibble, avg = mean( colOfInterest))
Run Code Online (Sandbox Code Playgroud)
我读过与dplyr编程页,我已经尝试了一堆的组合quo,enquo,!!,.dots=(...),等,但我还没有想出这样做还以正确的方式。
我也知道这个答案,但是,1) 当我使用标准评估函数时standardise_,R 告诉我它已经贬值了,2) 这个答案看起来一点也不优雅。那么,有没有一种好的,简单的方法来做到这一点?
谢谢!
我有一个基因表达分数的数据框(细胞x基因)。我还将每个单元格所属的簇存储为一列。
我想计算一组基因(列)的每个簇的平均表达值,但是,我只想在这些计算中包含 > 0 的值。
我对此的尝试如下:
test <- gene_scores_df2 %>%
select(all_of(gene_list), Clusters) %>%
group_by(Clusters) %>%
summarize(across(c(1:13), ~mean(. > 0)))
Run Code Online (Sandbox Code Playgroud)
这会产生以下小标题:
# A tibble: 16 x 14
Clusters SLC17A7 GAD1 GAD2 SLC32A1 GLI3 TNC PROX1 SCGN LHX6 NXPH1 MEIS2 ZFHX3 C3
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 C1 0.611 0.605 0.817 0.850 0.979 0.590 0.725 0.434 0.275 0.728 0.949 0.886 0.332
2 C10 0.484 0.401 0.434 0.401 0.791 0.387 0.431 0.362 0.204 …Run Code Online (Sandbox Code Playgroud) 在这种数据框中:
df <- data.frame(
w1 = c("A","A","B","C","A"),
w2 = c("C","A","A","C","C"),
w3 = c("C","A","B","C","B")
)
Run Code Online (Sandbox Code Playgroud)
我需要计算所有列中字符值的列内比例。有趣的是,以下代码适用于大型实际数据集,但对上述玩具数据会引发错误:
df %>%
summarise(across(everything(), ~prop.table(table(.))*100))
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是一个数据框,其中每列中所有值的精确比例加上一列指示值:
w1 w2 w3
1 A 60 40 20
2 B 20 0 40
3 C 20 60 40
Run Code Online (Sandbox Code Playgroud) 我想使用dplyrfor 循环来总结每个自变量(列)和目标变量。这是我的主要数据框:
Contract_ID Asurion Variable_1 Variable_2 Variable_3
1 年 acf
2 年平均
3N BCG
4 N adf
5 年 bcf
6 Y adf
分组后我得到
a1 <- a %>%
group_by(Asurion,BhvrBnk_Donates_to_Env_Causes) %>%
summarise(counT=n_distinct(CONTRACT_ID)) %>%
mutate(perc=paste0(round(counT/sum(counT)*100,2),"%"))
Asurion Variable_1 CounT perc
Y a 3 75%
Y b 1 25%
N a 1 50%
N b 1 50%
Run Code Online (Sandbox Code Playgroud)
我希望对数据框中存在的每个变量进行汇总,并且我想使用 for 循环来完成此操作。我怎样才能达到我想要的结果
这是我尝试使用的,但似乎不起作用。这是一个学校项目,我需要为此使用 for 循环。请在这里帮助我
categorical <- colnames(a)###where categroical is the names of all columns in a
###I would like to have a for …Run Code Online (Sandbox Code Playgroud) 我有一个带有二进制数字响应变量(0 或 1)和几个响应变量的 df 。我正在尝试创建一个按类型(3 级变量)和步骤(7 级)分组的表。我想要每个步骤中每种类型的平均响应和标准差。输出表应有 21 行,其中有 4 个变量:类型、步长、平均值和标准差。
我的代码如下所示:
data <- data %>% group_by(step, type) %>% summarise(Response = mean(Response), dev = sd(Response))
Run Code Online (Sandbox Code Playgroud)
输出表正确生成平均值,但对所有 sd 值返回 NA。我尝试使用 'na.rm=TRUE' 删除 NA 值,但原始 df 中没有任何响应。有任何想法吗?
我有以下数据:
\nlibrary(tidyverse)\n\ndf <- data.frame(id = c(1,1,1,2,2,2),\n x = rep(letters[1:2], each = 3),\n y = c(3,4,3,5,6,5),\n z = c(7,8,9,10,11,12))\nRun Code Online (Sandbox Code Playgroud)\nid我现在想通过一种获得z依赖值总和的方式来总结数据y。条件y本身取决于 的值x。
我以为我可以使用下面的代码,但这给了我所有输入 id 并且没有\xe2\x80\x98t 总结。结果是正确的,但我仍然希望每个 id 一行。
\ndf %>%\n group_by(id) %>%\n summarize(test = case_when(x == 'a' ~ sum(z[y == 3]),\n x == 'b' ~ sum(z[y == 5])))\n\n# A tibble: 6 x 2\n# Groups: id [2]\n id test\n <dbl> <dbl>\n1 1 16\n2 1 16\n3 1 16\n4 2 22\n5 2 …Run Code Online (Sandbox Code Playgroud)