我有一个包含许多不同类型列的数据框.我想用相应类的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版本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,但它似乎认为有一个更新/不同的版本.
有什么想法吗?
我有两个数据框,下面是每个的一个小样本:
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的行数不同.
但是,我真正想要的是避免"按行"这样做,因为我的数据框有很多行.有没有办法矢量化?
我有以下数据框:
> 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 解决方案将不胜感激!
我有一个矢量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 包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) 我有以下数据框,其中每个患者都是一行(我只显示了其中的一个样本):
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 阶段的第一年有多少患者,以及所有其他组合。
任何有关数据准备的帮助将不胜感激。 …
我有一个包含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) 我有以下数据框:
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) 我有以下数据框
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 ×10
dplyr ×5
aggregate ×1
data.table ×1
dataframe ×1
devtools ×1
distance ×1
matrix ×1
missing-data ×1
na ×1
networkd3 ×1
packages ×1
performance ×1
rtools ×1