我有几个具有相似(但不相同)系列变量(列)的数据框。我想找到一种方法让 R 告诉我不同数据帧中的公共变量是什么。
例子:
`a <- c(1, 2, 3)
b <- c(4, 5, 6)
c <- c(7, 8, 9)
df1 <- data.frame(a, b, c)
b <- c(1, 3, 5)
c <- c(2, 4, 6)
df2 <- data.frame(b, c)`
Run Code Online (Sandbox Code Playgroud)
对于df1和df2,我希望 R 有某种方式告诉我公共变量是b和c。
我有一个数据集,我尝试在包中使用多重插补mice,miceadds并micemd在多级设置中使用分类/因子变量。我可以将该方法2l.2stage.pois用于连续变量,效果非常好。分类变量的插补也适用于polyreg,但这并没有利用多级数据。
这是说明我的问题的可复制代码。
dat <- data.frame(x=rep(c("A", "B"), 50),
y=rep(c(10:14), 20),
r=rep(c(1:50), 2),
z=rep(c(1:4), 25))
dat[40:44, c("x")] <- NA
dat[60:64, c("y")] <- NA
dat[80:84, c("r")] <- NA
predm <- mice::make.predictorMatrix(data=dat)
predm[, c("z")] <- -2
predm[, c("r")] <- 3
predm[row(predm) == col(predm)] <- 0
meth <- c("x"="polyreg", "y"="2l.2stage.pois", "r"="", "z"="")
imputed = mice(dat, method=meth, predictorMatrix=predm, m=1, maxit=1)
imp <- complete(imputed)
table(imp$x, dat$x, useNA = "always")
table(imp$y, dat$y, useNA = "always")
Run Code Online (Sandbox Code Playgroud)
本质上,我试图polyreg用可能应该以 …
我有一个类似于如下的数据框:
x <- c(1, 2, 3, 4, 5)
y <- c(1, 2, 3, 2, 1)
df <- data.frame(x, y)
Run Code Online (Sandbox Code Playgroud)
x我想找到何时y达到最大值的值。我知道我可以用这个找到最大值y:
max(df$y)
但我不知道如何搭配,我想可能有更好的方法。
我有一个数据框,如下所示:
x <- c(1, 2, 1, 2)
y <- c(1, 2, 3, 4)
z <- c(4, 3, 2, 1)
df <- data.frame(x, y, z)
Run Code Online (Sandbox Code Playgroud)
fa我正在使用包中的函数运行因子分析psych:
fit <- fa(df, nfactors = 2)
fit$loadings
Run Code Online (Sandbox Code Playgroud)
这会产生以下输出:
Loadings:
MR1 MR2
x 0.448
y 0.999
z -0.999
MR1 MR2
SS loadings 2.195 0.000
Proportion Var 0.732 0.000
Cumulative Var 0.732 0.732
Run Code Online (Sandbox Code Playgroud)
我想将带有 MR1 和 MR2 的表保存为数据框。有谁知道如何做到这一点?谢谢。
我正在尝试创建一个连续变量 (1-10) 的直方图,旁边有一个条形图,表示向量中有多少个 NA。我正在使用geom_histogram()来自ggplot2. 这是一个例子:
v <- data.frame(x=c(1, 2, 3, 4, 3, 2, 3, 4, 5, 3, 2, 1, NA, NA, NA, NA))
ggplot(v, aes(x=x)) +
geom_histogram()
Run Code Online (Sandbox Code Playgroud)
我已经查看了该函数的功能,但似乎没有办法包含 NA,并且还没有从其他问题中找到一种优雅的方法。谢谢您的帮助。
我有一个包含 2 个变量的数据框,我想使用该clusGap函数来查找最适合使用的聚类数量。这段代码有类似的结果:
library(cluster)
x <- as.vector(runif(100, 0, 1))
y <- as.vector(runif(100, 0, 1))
df <- data.frame(x, y)
gap_stat <- clusGap(df, FUN = kmeans, nstart = n,
K.max = 10, B = 50)
gap_stat
Run Code Online (Sandbox Code Playgroud)
结果:
Clustering Gap statistic ["clusGap"] from call:
clusGap(x = df, FUNcluster = kmeans, K.max = 10, B = 50, nstart = n)
B=50 simulated reference sets, k = 1..10; spaceH0="scaledPCA"
--> Number of clusters (method 'firstSEmax', SE.factor=1): 1
logW E.logW gap SE.sim
[1,] 2.569315 …Run Code Online (Sandbox Code Playgroud) 我有一个数据框列表,如下所示:
x <- c(1, 2, 3, 4, 5)
y <- c(5, 4, 3, 2, 1)
df1 <- data.frame(x)
df2 <- data.frame(y)
x <- list(df1, df2)
Run Code Online (Sandbox Code Playgroud)
我想使用 for 循环打印列表中数据帧的名称,x如下所示:
for (i in x) {
deparse(substitute(x[i]))
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用。我的目标是将数据帧的名称打印为如下字符:
[1] df1
[2] df2
Run Code Online (Sandbox Code Playgroud)
谢谢!
我有一个像这样的数据框:
df <- data.frame(x1=c(1, 2, 3, 2, 1),
x2=c(1, 10, 5, 8, 3))
Run Code Online (Sandbox Code Playgroud)
我正在尝试将两个变量标准化为 0 和 1 之间。因此 2 英寸x1将是 0.5,5 英寸x2也将是 0.5。
我尝试过使用以下标准化函数:
range01 <- function(x){(x-min(x, na.rm = T))/(max(x, na.rm = T)-min(x, na.rm = T))}
df <- range01(df)
Run Code Online (Sandbox Code Playgroud)
相反,它通过整个数据帧的范围(1 到 10)对所有变量进行标准化,给出:
x1 x2
0.0000000 0.0000000
0.1111111 1.0000000
0.2222222 0.4444444
0.1111111 0.7777778
0.0000000 0.2222222
Run Code Online (Sandbox Code Playgroud)
如何根据两列各自的范围对它们进行标准化?我需要一个系统函数来执行此操作,因为我在 for 循环中处理多个数据帧中的许多变量。
我想计算 data.frame 中的组的五分位数,例如:
df <- data.frame(x=1:100, y=c(rep("A", 50), rep("B", 50)))
Run Code Online (Sandbox Code Playgroud)
使用ntile()函数和group_byfrom dplyr,我想我可以得到分组的五分位数,比如这里。但是,从表中可以看出,五分位数是针对整个数据集计算的。我希望得到的结果,其中有10每个五分之一的A和B在这种情况下。
df$z <- df %>% group_by(y) %>% mutate(z = ntile(x, 5)) %>% pull(z)
table(df$y, df$z)
1 2 3 4 5
A 20 20 10 0 0
B 0 0 10 20 20
Run Code Online (Sandbox Code Playgroud)