Error (in R):内部错误在' df_slice() ':列必须匹配数据帧大小

  • 本文关键字:数据帧 df 内部 in 错误 Error slice r
  • 更新时间 :
  • 英文 :


我试图运行以下代码:

library(dplyr)
df %>%
filter(complete.cases(B)) %>% 
mutate(A = unique(df$A)) %>% 
left_join(df %>% select(A), ., by = "A")

,其中A是来自一个Excel文件的包含1.048.575个观测值的列,B是来自另一个Excel文件的包含10.571个观测值的列。

对于数据,这段代码工作得很好示例如下:

df <- structure(list(A = c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3
), B = c(4193, 15, 9734, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA)), class = "data.frame", row.names = c(NA, -14L))

如下所示,我需要的是将B中的每个唯一观测值与a中的一系列重复观测值相匹配,这段代码为我提供了以下所需的输出:

A    B
1  1 4193
2  1 4193
3  1 4193
4  1 4193
5  1 4193
6  1 4193
7  1 4193
8  2   15
9  2   15
10 2   15
11 3 9734
12 3 9734
13 3 9734
14 3 9734

然而,我的问题来自于这样一个事实,这个样本输出由两个长度相等的列组成,而我正在处理的数据集有两个长度不等的列,并且需要以一种方式或另一种方式进行结构化,以便包括所有观察值。

我已经结构化了我的数据这样的:

df <- structure(list(A = c(rep(list(1048575))
), B = c(rep(list(10571)))), class = "data.frame", row.names = c(-10571L, -1048575L))

但是当我尝试运行相同的代码时,我得到错误消息" error:df_slice()内部错误:Columns必须匹配数据帧大小。">

有没有人知道我如何能覆盖的问题,我有(无论是通过结构化数据以不同的方式或通过尝试另一个代码),使代码可以运行所有需要的观察?

公立小学另一个<<p> strong>代码我试过的是下面这个:
library(dplyr)
df_A <- df %>%
dplyr::count(A)
vector_A <- df_A[,2]
vector_B <- df$B
Result <- rep(vector_A, vector_B)

然而,最后一种方法毫无用处。

我真诚地希望我已经足够清楚地解释了我所遇到的问题。

任何帮助都将非常感激。

提前感谢!

编辑

给定运行@RonakShah代码时的输出:

A          B
-10571  <dbl [1]>   <dbl [1]>       
-1048575 <NULL>     <dbl [1]>   

您可以试试下面的代码-

library(dplyr)
df <- df %>% mutate(B = na.omit(B)[match(A, unique(A))])
df
#   A    B
#1  1 4193
#2  1 4193
#3  1 4193
#4  1 4193
#5  1 4193
#6  1 4193
#7  1 4193
#8  2   15
#9  2   15
#10 2   15
#11 3 9734
#12 3 9734
#13 3 9734
#14 3 9734

match(.., unique(..))A的每个唯一值构建一个顺序索引。然后我们用它来子集B的非na值。

在本例中,由于A的值依次为1、2、3,因此可以直接使用

df %>% mutate(B = na.omit(B)[A])

我仍然不知道到底想要什么,但在这里也给出了一个简单的例子,希望它更接近预期的结果。

#Data with two columns of unequal length
l <- list(A = c(3,3,3,2,2,1), B = c(4,5,6))
#Expand B to length of A using rep and rle
data.frame(l["A"], B = rep(l$B, rle(l$A)$lengths))
#  A B
#1 3 4
#2 3 4
#3 3 4
#4 2 5
#5 2 5
#6 1 6

相关内容

最新更新