小编Mar*_*ayo的帖子

如何找到不同数据框中的共同变量?

我有几个具有相似(但不相同)系列变量(列)的数据框。我想找到一种方法让 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)

对于df1df2,我希望 R 有某种方式告诉我公共变量是bc

r dataframe

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

具有分类/因子变量的多级多重插补 (MICE)?

我有一个数据集,我尝试在包中使用多重插补micemiceaddsmicemd在多级设置中使用分类/因子变量。我可以将该方法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用可能应该以 …

r factors multi-level r-mice imputation

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

查找与其他列中的最大值相对应的值

我有一个类似于如下的数据框:

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)

但我不知道如何搭配,我想可能有更好的方法。

r max match correspondence

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

从因子分析的负载中获取数据框架(psych 中的 fa 函数)

我有一个数据框,如下所示:

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 的表保存为数据框。有谁知道如何做到这一点?谢谢。

r factor-analysis dataframe psych

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

如何在 geom_histogram 中包含带有 NA 的条形图?

我正在尝试创建一个连续变量 (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,并且还没有从其他问题中找到一种优雅的方法。谢谢您的帮助。

r histogram ggplot2 na

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

如何从 clusGap 函数中获取最佳簇数作为输出?

我有一个包含 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)

r cluster-analysis list cluster-computing output

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

如何使用for循环打印列表中数据帧的名称?

我有一个数据框列表,如下所示:

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)

谢谢!

loops for-loop r list dataframe

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

使用不同范围的变量将变量从 0 标准化到 1?

我有一个像这样的数据框:

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 循环中处理多个数据帧中的许多变量。

r function normalization

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

将 ntile() 与 group_by() 与 dplyr 一起使用

我想计算 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每个五分之一的AB在这种情况下。

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)

group-by r percentile dataframe dplyr

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