小编tmf*_*mnk的帖子

高效的递归随机采样

想象一下以下格式的 df:

   ID1 ID2
1    A   1
2    A   2
3    A   3
4    A   4
5    A   5
6    B   1
7    B   2
8    B   3
9    B   4
10   B   5
11   C   1
12   C   2
13   C   3
14   C   4
15   C   5
Run Code Online (Sandbox Code Playgroud)

问题是为 ID1 中的第一个唯一值随机选择一行(最好调整为 n 行),从数据集中删除相应的 ID2 值,从剩余的 ID2 值池中随机选择一个值作为第二个 ID1 值(即递归),等等。

因此,例如,对于第一个 ID1 值,它将执行sample(1:5, 1),结果为 2。对于第二个 ID1 值,它将执行sample(c(1, 3:5), 1),结果为 3。对于第三个 ID1 值,它将执行sample(c(1, 4:5), 1),结果为 …

random algorithm recursion performance r

24
推荐指数
3
解决办法
970
查看次数

按组高效过滤多列

假设数据集每个 ID 包含多行,多列包含一些存储为字符串的代码:

df <- data.frame(id = rep(1:3, each = 2),
                 var1 = c("X1", "Y1", "Y2", "Y3", "Z1", "Z2"),
                 var2 = c("Y1", "X2", "Y2", "Y3", "Z1", "Z2"),
                 var3 = c("Y1", "Y2", "X1", "Y3", "Z1", "Z2"),
                 stringsAsFactors = FALSE)

  id var1 var2 var3
1  1   X1   Y1   Y1
2  1   Y1   X2   Y2
3  2   Y2   Y2   X1
4  2   Y3   Y3   Y3
5  3   Z1   Z1   Z1
6  3   Z2   Z2   Z2
Run Code Online (Sandbox Code Playgroud)

现在,假设我想过滤掉X在任何相关列中具有特定代码(此处)的所有 ID 。使用dplyrand purrr …

regex performance filtering r dataframe

15
推荐指数
5
解决办法
558
查看次数

通过仅更改 mutate() 中的一个自变量来拟合多个回归模型

我怀疑这个问题可能是重复的,但是,我发现没有什么令人满意的。想象一个具有如下结构的简单数据集:

set.seed(123)
df <- data.frame(cov_a = rbinom(100, 1, prob = 0.5),
                 cov_b = rbinom(100, 1, prob = 0.5),
                 cont_a  = runif(100),
                 cont_b = runif(100),
                 dep = runif(100))

    cov_a cov_b      cont_a      cont_b          dep
1       0     1 0.238726027 0.784575267 0.9860542973
2       1     0 0.962358936 0.009429905 0.1370674714
3       0     0 0.601365726 0.779065883 0.9053095817
4       1     1 0.515029727 0.729390652 0.5763018376
5       1     0 0.402573342 0.630131853 0.3954488591
6       0     1 0.880246541 0.480910830 0.4498024841
7       1     1 0.364091865 0.156636851 0.7065019011
8       1     1 0.288239281 0.008215520 0.0825027458 …
Run Code Online (Sandbox Code Playgroud)

regression r dplyr tidyverse

11
推荐指数
3
解决办法
389
查看次数

用R删除反向重复项

我在R中有一个包含拟南芥中旁系同源基因的数据框,看起来像这样:

gene_x    gene_y
AT1       AT2
AT3       AT4
AT1       AT2
AT1       AT3
AT2       AT1
Run Code Online (Sandbox Code Playgroud)

与'ATx'对应的基因名称.

现在,对于下游分析,我希望仅继续使用唯一对.有些对只是简单的重复,可以在使用该duplicated()功能时轻松删除.但是,上面的人工数据框中的第五行也是重复的,但是按相反的顺序,并且不会被函数拾取duplicated(),也不会被unique()函数拾取.

有关如何删除这些行的任何想法?

string r dataframe

8
推荐指数
2
解决办法
1375
查看次数

从指定的 x 值显示 geom_smooth() 趋势线

假设一个数据集包含每个多个时间段和每个多个组的计数数据,格式如下:

set.seed(123)
df <- data.frame(group = as.factor(rep(1:3, each = 50)),
                 week = rep(1:50, 3),
                 rate = c(round(700 - rnorm(50, 100, 10) - 1:50 * 2, 0),
                          round(1000 - rnorm(50, 200, 10) - 1:50 * 2, 0),
                          round(1000 - rnorm(50, 200, 10) - 1:50 * 2, 0)))

    group week rate
1       1    1  604
2       1    2  598
3       1    3  578
4       1    4  591
5       1    5  589
6       1    6  571
7       1    7  581
8       1    8 …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

8
推荐指数
3
解决办法
242
查看次数

使用dplyr / tidyverse同时对多个变量进行多重配对t检验

假设这样的数据结构:

   ID testA_wave1 testA_wave2 testA_wave3 testB_wave1 testB_wave2 testB_wave3
1   1           3           2           3           6           5           3
2   2           4           4           4           3           6           6
3   3          10           2           1           4           4           4
4   4           5           3          12           2           7           4
5   5           5           3           9           2           4           2
6   6          10           0           2           6           6           5
7   7           6           8           4           6           8           3
8   8           1           5           4           5           6           0
9   9           3           2           7           8           4           4 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

7
推荐指数
2
解决办法
446
查看次数

汇总dplyr中每组的所有其他值

我有一个数据集,其中有成组的个人决策。对于每个人,我需要他/她的小组成员的所有决定的汇总(即总和)。所以说数据看起来像:

set.seed(123)
group_id <- c(sapply(seq(1, 3), rep, times = 3))
person_id <- rep(seq(1,3),3)
decision <- sample(1:10, 9, replace=T)
df <-data.frame(group_id, person_id, decision)
df
Run Code Online (Sandbox Code Playgroud)

结果是:

  group_id person_id decision
1        1         1        3
2        1         2        8
3        1         3        5
4        2         1        9
5        2         2       10
6        2         3        1
7        3         1        6
8        3         2        9
9        3         3        6
Run Code Online (Sandbox Code Playgroud)

我需要产生这样的东西:

  group_id person_id decision others_decision
1        1         1        3 13
2        1         2        8  8
3        1 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

是否有R函数从具有许多NA值的逗号分隔字符串中仅提取数字,以创建仅包含数字的列?

我有一个看起来像这样的数据集:

 before = data.frame(diag1 = c(1,NA, 1, NA, NA, 1), diag2 = c(NA, NA, NA, 2, NA, NA), diag3 = c(3, NA, NA, NA, 3, 3), diag4 = c(4, 4, NA, NA, 4, NA))

  diag1 diag2 diag3 diag4
1     1    NA     3     4
2    NA    NA    NA     4
3     1    NA    NA    NA
4    NA     2    NA    NA
5    NA    NA     3     4
6     1    NA     3    NA
Run Code Online (Sandbox Code Playgroud)

我一直在尝试寻找一种解决方案,其中最终结果是一个新列,名为“ diagnoses”,看起来像这样

  diagnoses
1     1,3,4
2         4
3         1
4         2
5 …
Run Code Online (Sandbox Code Playgroud)

string r numeric na

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

r summarise_if 有多个条件

我试图将观察的 df 减少到单个观察(单行)。我想 summarise_if 是带有均值的数字,而 if 是带有模式的字符串或因子。下面的代码不起作用,但我希望它给出了想法。谢谢!

#data frame
num <- c(1:7)
str <- c("toy","control","play",NA,"give","toy","toy")
df_finale <- data.frame(num,str)

#mode function
Mode <- function(x) {
        ux <- unique(x)
        ux[which.max(tabulate(match(x, ux)))]
}

#df reduction
df_finale <- df_finale %>%
                    summarize_if(is.numeric, mean, na.rm = TRUE) %>%
                    summarize_else_if(!is.numeric, Mode)
Run Code Online (Sandbox Code Playgroud)

r mode reduction dplyr summarize

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

不同大小组的高效递归随机抽样

这个问题是我之前关于递归随机采样高效递归随机采样问题的后续问题。当组大小相同或每组需要固定数量的样本时,该线程中的解决方案可以正常工作。然而,让我们想象一个数据集如下:

   ID1 ID2
1    A   1
2    A   6
3    B   1
4    B   2
5    B   3
6    C   4
7    C   5
8    C   6
9    D   6
10   D   7
11   D   8
12   D   9
Run Code Online (Sandbox Code Playgroud)

我们想要为每个 ID1 随机采样最多 n 个ID2,并递归地执行此操作。这里的递归意味着我们从第一个 ID1 移动到最后一个 ID1,如果 ID2 已经被采样为 ID1,那么它不应该用于后续的 ID1。假设n = 2,那么预期结果如下;

ID1 ID2
1    A   1
2    A   6
4    B   2
5    B   3
6    C   4
7    C …
Run Code Online (Sandbox Code Playgroud)

recursion performance r

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