小编Omr*_*tia的帖子

用于填充具有相同类型的NA的列的函数

我有一个包含许多不同类型列的数据框.我想用相应类的NA替换每一列.

例如:

df = data_frame(x = c(1,2,3), y = c("a", "b", "c"))

df[, 1:2] <- NA
Run Code Online (Sandbox Code Playgroud)

产生一个包含两个逻辑列的数据框,而不是数字和字符.我知道我可以告诉R:

df[,1] = as.numeric(NA)
df[,2] = as.character(NA)
Run Code Online (Sandbox Code Playgroud)

但是,如何在所有可能类型的NA的所有列的循环中共同执行此操作?

r na dplyr

17
推荐指数
3
解决办法
835
查看次数

没有找到与R版本3.5.0兼容的RTools

我在安装R版本3.5.0的data.table时遇到问题,并建议检查是否正确安装了RTools.

安装了RTools 3.5(这似乎是最新的)我输入了

find_rtools(T)
Run Code Online (Sandbox Code Playgroud)

我收到以下消息:

WARNING: Rtools is required to build R packages, but no version 
of Rtools compatible with R 3.5.0 was found. 
(Only the following incompatible version(s) of Rtools were found:3.4,3.5)

Please download and install the appropriate version of Rtools from 
http://cran.r-project.org/bin/windows/Rtools/.
Run Code Online (Sandbox Code Playgroud)

所以一方面它看起来我安装了3.5,但它似乎认为有一个更新/不同的版本.

有什么想法吗?

packages r devtools data.table rtools

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

矢量地找到数据帧行的邻居

我有两个数据框,下面是每个的一个小样本:

df1 <- data.frame(a1= c(3,4), a2 = c(8, 8), a3 = c(4, 18), a4 = c(9,9), a5 = c(17, 30))

df2 <- data.frame(a1 = c(2,2,2,3,3,3,4,4,4), a2 = c(7,7,7,7,7,7,7,7,7), 
                 a3 = c(4,4,4,4,4,4,4,4,4), a4 = c(10,10,10, 10, 10, 10, 10,10,10), 
                 a5 = c(15,16,17, 15, 16, 17, 15, 16, 17))
Run Code Online (Sandbox Code Playgroud)

我想检查,对于每一行df1,它是否有"邻居" df2,其中,邻居我的意思是每列中最多1个(绝对值)不同的观察.因此,例如,第2行df2是第1行的邻居df1.

我目前这样做的方式如下:

sweep(as.matrix(df2), 2, as.matrix(df1[1,]), "-")
Run Code Online (Sandbox Code Playgroud)

对于第1行df1,我必须为df1的每一行重复此操作.请注意,df2和df1的行数不同.

但是,我真正想要的是避免"按行"这样做,因为我的数据框有很多行.有没有办法矢量化?

r vectorization dataframe

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

在 R 中,指示每行中哪些列的值为“true”

我有以下数据框:

> db
# A tibble: 3 x 4
    x     y     z     w
  <lgl> <lgl> <lgl> <lgl>
1  TRUE FALSE  TRUE FALSE
2  TRUE FALSE  TRUE FALSE
3  TRUE FALSE  TRUE FALSE
Run Code Online (Sandbox Code Playgroud)

我想创建一个新列,其中每行存储等于 TRUE 的列,因此例如第 1 行将是 c(x,z) (例如以字符格式)。

dplyr 解决方案将不胜感激!

aggregate r dplyr

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

在R中,使用向量化在列表中查找向量的元素

我有一个矢量v1

v1 = c(1, 200, 4000)
Run Code Online (Sandbox Code Playgroud)

我想在列表L1中矢量地找到v1元素的索引,即没有循环,其中

> L1
[[1]]
[1] 1 2 3 4

[[2]]
[1] 100 200 300 400

[[3]]
[1] 1000 2000 3000 4000
Run Code Online (Sandbox Code Playgroud)

输出应为c(1,2,4).

有没有办法在不使用循环或应用的情况下执行此操作(在计算上与使用循环相同?)我必须为非常长的向量执行此操作.

r vectorization

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

as.matrix 在远处物体上非常慢;如何让它更快?

我找到了一个 R 包Rlof,它使用多线程来计算距离矩阵,它做得很好。

但是,该函数的输出distmc是向量而不是矩阵。应用as.matrix到这个“dist”对象比距离的多线程计算要昂贵得多。

查看函数 help,打印对角线和上三角形的选项在那里,但我不明白应该在哪里使用它们。

有没有办法as.matrix以某种方式节省时间?

可重现的例子:

set.seed(42)
M1 = matrix(rnorm(15000*20), nrow = 15000, ncol =20)
system.time({dA = distmc(M1, method = "euclidean", diag = TRUE,
                         upper = TRUE, p = 2)})
system.time(A = as.matrix(dA))
Run Code Online (Sandbox Code Playgroud)

performance r distance matrix distance-matrix

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

R中的桑基图 - 数据准备

我有以下数据框,其中每个患者都是一行(我只显示了其中的一个样本):

df = structure(list(firstY = c("N/A", "1", "3a", "3a", "3b", "1", 
"2", "1", "5", "3b"), secondY = c("N/A", "1", "2", "3a", "4", 
"1", "N/A", "1", "5", "3b"), ThirdY = c("N/A", "1", "N/A", "3b", 
"4", "1", "N/A", "1", "N/A", "3b"), FourthY = c("N/A", "1", "N/A", 
"3a", "4", "1", "N/A", "1", "N/A", "3a"), FifthY = c("N/A", "1", 
"N/A", "2", "5", "1", "N/A", "N/A", "N/A", "3b")), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -10L))
Run Code Online (Sandbox Code Playgroud)

我想绘制一个 Sankey 图,它显示了每个患者随时间变化的轨迹,我知道我必须创建节点和链接,但是我在将数据转换为完成此操作所需的格式时遇到了问题。具体来说,最大的问题是计算每个轨迹有多少患者,例如,从第 1 阶段到第 2 阶段的第一年有多少患者,以及所有其他组合。

任何有关数据准备的帮助将不胜感激。 …

r sankey-diagram networkd3

3
推荐指数
2
解决办法
2985
查看次数

计算NA出现在非缺失值之间

我有一个包含5个时间列(第一年,第二年y等)的数据框,对于某些行,我在非缺失值之间具有NA。示例如下:

df = structure(list(FirstYStage = c(NA, 3.2, 3.1, NA, NA, 2, 1, 3.2, 
3.1, 1, 2, 5, 2, NA, NA, NA, NA, 2, 3.1, 1), SecondYStage = c(NA, 
3.1, 3.1, NA, NA, 2, 1, 4, 3.1, 1, NA, 5, 3.1, 3.2, 2, 3.1, NA, 
2, 3.1, 1), ThirdYStage = c(NA, NA, 3.1, NA, NA, 3.2, 1, 4, NA, 
1, NA, NA, 3.2, NA, 2, 3.2, NA, NA, 2, 1), FourthYStage = c(NA, 
NA, 3.1, NA, NA, NA, 1, 4, NA, …
Run Code Online (Sandbox Code Playgroud)

r missing-data dplyr

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

dplyr中的条件求和

我有以下数据框:

df <- structure(list(Claim2015 = c(1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), Claim2016 = c(1, 0, 1,
1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0), Claim2017 = c(0,
0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1), Claim2018 = c(0,
1, 1, 1, 1, 0, 0, 0, 0, …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

R中的累积百分比

我有以下数据框

d2
# A tibble: 10 x 2
  ID Count
<int> <dbl>
  1     1
  2     1
  3     1
  4     1
  5     1
  6     2
  7     2
  8     2
  9     3
 10     3
Run Code Online (Sandbox Code Playgroud)

其中指出每个人(ID)的计数。

我想计算每个计数的累计百分比:1-50%,最多2:80%,最多3:100%。我试过了

> d2 %>% mutate(cum = cumsum(Count)/sum(Count))
# A tibble: 10 x 3
  ID   Count     cum
 <int> <dbl>    <dbl>
   1     1   0.05882353
   2     1   0.11764706
   3     1   0.17647059
   4     1   0.23529412
   5     1   0.29411765
   6     2   0.41176471
   7     2   0.52941176
   8     2   0.64705882
   9     3   0.82352941
  10 …
Run Code Online (Sandbox Code Playgroud)

r cumulative-sum dplyr

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