首页 文章

将新行插入到dataframe而不会丢失格式

提问于
浏览
1

我正在尝试创建一个大的空data.frame并插入一组行 . 我在很多论坛上都看到了一些类似的问题,但是我无法将它们中的任何一个成功地应用到我遇到的特定格式问题上 .

我开始使用rbind(df,allic)#allic是我要插入df#的数据框但是,考虑到我的数据集的大小,操作需要5 1/2分钟才能完成 . 我知道在开头创建数据框并替换行可以提高效率,但是我无法使其适用于我的问题 . 代码如下:

初步数据:

Order.ID                  Product
1    193505              Onion Rings
2    193505 Pineapple Cheddar Burger
3    193623            Fountain Soda
4    193623             French Fries
5    193623                Hamburger
6    193623                  Hot Dog
7    193631             French Fries
8    193631                Hamburger
9    193631                Milkshake

产品将与下面的产品不匹配,但这是一个格式化问题,我认为最好显示格式化,这些格式将我带到了现在的位置 .

nb$Order.ID <- as.factor(nb$Order.ID)
plist <- aggregate(nb$Product,list(nb$Order.ID),list)
allp <- unique(unlist(plist$x))
allic <- expand.grid(plist$x[[1]], Var2=plist$x[[1]], Var3=1)


                      Var1                     Var2 Var3
1              Onion Rings              Onion Rings    1
2 Pineapple Cheddar Burger              Onion Rings    1
3              Onion Rings Pineapple Cheddar Burger    1
4 Pineapple Cheddar Burger Pineapple Cheddar Burger    1

现在我使用以下方法创建一个空数据帧(df):

df <- data.frame(factor=rep(NA, rcnt), factor=rep(NA,rcnt), stringsAsFactors=FALSE)

rcnt是一个大的,任意的数字,我打算在操作完成后修剪它 . 当我尝试使用以下方法插入这些行时出现问题:

df[1:4,] <- allic
head(df, n=10)


  factor factor.1
1      47       47
2      51       47
3      47       51
4      51       51
5      NA       NA
6      NA       NA
7      NA       NA
8      NA       NA

如何在数据框中插入行而不会丢失我的值的格式?我非常感谢在这一点上我能得到的任何帮助 .

EDIT 以下评论:

>df[i] <- for(i in 1:nrow(plist)) {
>       allic <- expand.grid(plist$x[[i]], Var2=plist$x[[i]], Var3=1) 
>       df[i:nrow(allic),] <- sapply(allic, as.character)

我对R仍然很新,但是当我使用df < - rbind(df,allic)时,这是有效的 . nrow(df)是4096 .

1 回答

  • 1

    尝试在 as.character 中包装allic,如下所示:

    df[1:4,] <- sapply(allic, as.character)
    
    
    > df
                         factor                 factor.1
    1               Onion Rings              Onion Rings
    2  Pineapple Cheddar Burger              Onion Rings
    3               Onion Rings Pineapple Cheddar Burger
    4  Pineapple Cheddar Burger Pineapple Cheddar Burger
    5                      <NA>                     <NA>
    6                      <NA>                     <NA>
    7                      <NA>                     <NA>
    8                      <NA>                     <NA>
    9                      <NA>                     <NA>
    10                     <NA>                     <NA>
    

相关问题