gpt4 book ai didi

r - 在将列表转换为数据框或数据表时处理丢失的信息

转载 作者:行者123 更新时间:2023-12-04 09:59:23 25 4
gpt4 key购买 nike

previous question 相关有什么方法可以将其中一些名称重复的命名元素列表转换为数据表,其中 NA 值实际上按照它们在列表中出现的顺序显示在数据表中?

例如:列表

testlist <- list("Blue", "405", "Truck", "400", "Car", "White", "500", "Truck")
testnames <- c("Color", "HP", "Type", "HP", "Type", "Color", "HP", "Type")
names(testlist) <- testnames

$Color
[1] "Blue"

$HP
[1] "405"

$Type
[1] "Truck"

$HP
[1] "400"

$Type
[1] "Car"

$Color
[1] "White"

$HP
[1] "500"

$Type
[1] "Truck"

可以使用以下方法更改为数据表:
dcast(setDT(melt(testlist))[, N:=1:.N, L1], N~L1, value.var='value')

但输出是这样的:
  N Color  HP  Type
1 1 Blue 405 Truck
2 2 White 400 Car
3 3 <NA> 500 Truck

当我想要:
  N Color  HP  Type
1 1 Blue 405 Truck
2 2 <NA> 400 Car
3 3 White 500 Truck

有没有人有关于如何解决这个问题的建议?我很感激你的帮助。

最佳答案

一种方法是用正确的行数和正确的列数、名称和类型预先分配一个表,然后通过索引分配原始列表覆盖的单元格来填充它。

cns <- c('Color','HP','Type');
lcis <- match(names(testlist),cns);
lris <- c(1L,cumsum(diff(lcis)<=0L)+1L);
df <- as.data.frame(testlist[match(1:length(cns),lcis)],stringsAsFactors=F)[0,];
df[max(lris),] <- NA;
df;
## Color HP Type
## 1 <NA> <NA> <NA>
## 2 <NA> <NA> <NA>
## 3 <NA> <NA> <NA>
for (ci in 1:length(cns)) { m <- lcis==ci; df[lris[m],ci] <- do.call(c,testlist[m]); };
df;
## Color HP Type
## 1 Blue 405 Truck
## 2 <NA> 400 Car
## 3 White 500 Truck

在我的解决方案中,我小心地分别处理每一列,这提供了潜在的好处,如果输出表中的不同列(对应于输入列表中的不同组件子集)具有不同的数据类型,那么这些数据类型将被保留在决赛 table 。这就是我选择 for 的原因索引分配的循环。这对于您的确切输入列表当然不是必需的,它只有字符类型,但我认为无论如何这是一个有值(value)的目标。

中间变量说明
  • cns输出表中的列名。
  • lcis每个输入列表组件将在输出表中具有的列索引。这是通过简单地将输入列表组件的名称与 cns 匹配来计算的。 .
  • lris每个输入列表组件在输出表中的行索引。这个变量的计算有点有趣,也是解决方案的核心。由于输入列表中的列表示不完整(IOW 输入列表中可能存在“缺失列”),但您认为输入列表组件要根据它们在输出表中的行出现进行排序,我们可以t 使用常规索引(例如将每三个组件作为一行),并且我们也不能使用任何单个列名作为每行的标记,因为任何行中都可能缺少任何列。根据我的想法,唯一正确的方法是确定何时在输入列表中的较高索引(或相等索引)列之后立即出现较低索引(或等于索引)列,并将其作为换行符.因此,我们可以取 diff(lcis)<=0L要获得表示换行符的逻辑向量,取 cumsum()并添加 1 以获取行索引,我们还必须手动添加 1 以完成向量。
  • ci输出表中的列索引。在for期间使用循环遍历每个输出列。
  • m为每个 ci 计算内for环形。一个逻辑向量,表示哪些输入列表组件属于当前列 ci .用于索引两者 lris (提取要分配的行索引)和输入列表本身(提取要分配的实际值)。


  • 实际数据

    我从 dropbox 中获取了您的真实数据并将其存储为 testlist .以下是我的调查结果。

    首先,我按照它们出现的顺序检查了唯一的组件名称,将它们视为 cns :
    ## first reasonable assumption about cns
    cns <- unique(names(testlist));
    cns;
    ## [1] "Status" "Make" "Model"
    ## [4] "Kilometres" "Stock Number" "Engine"
    ## [7] "Number of Hours" "Front axle" "Rear axle"
    ## [10] "Suspension" "Wheelbase" "Transmission"
    ## [13] "Price" "Style/Trim" "Brakes"
    ## [16] "Mfg Exterior Colour" "Tires" "Engine (HP)"
    ## [19] "Exterior Colour"

    我们可以从中计算出一个新的暂定 lcis :
    ## examine lcis for ordering
    lcis <- match(names(testlist),cns);
    lcis;
    ## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 4 5 6 7 8 9 10 11 12
    ## [26] 13 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 4 5 6 7 8 9 10 11
    ## [51] 12 13 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 4 5 6 7 8 9 10
    ## [76] 11 12 13 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 4 5 6 7 8 9
    ## [101] 10 11 12 13 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 4 5 6 7 8
    ## [126] 9 10 11 12 13 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 4 5 6 7
    ## [151] 8 9 10 11 12 13 1 2 3 4 14 13 1 2 3 4 5 6 7 8 9 10 11 12 13
    ## [176] 1 2 3 4 5 15 16 6 8 9 10 17 11 18 12 19 13 1 2 3 4 5 15 16 6
    ## [201] 8 9 10 17 11 18 12 19 13

    仔细观察上面的向量,我们可以看到它以许多规则重复的 1:13 开始。 .事实上,只有在向量的末尾才变得不规则,我们看到 14 后面跟着 13,16 后面跟着 6,10-11-12 与 17-18-19 交错,等等。

    但是我们可以在这里做出的一个重要观察是,向量似乎由 1 和 13 所描绘的组组成。换句话说,对于所有似乎具有某种规律性(即使也存在某些不规律性)的范围,它们似乎开始以 1 结束,以 13 结束。这一观察结果与您关于车辆数据中间无序的评论一致。我们称之为 1/13 假设。

    通过在这个 1/13 边界上拆分,我们可以更清楚地了解码:
    ## recognizing 1/13 consistency, split on it to see how each (possible) row looks under this assumption
    split(lcis,cumsum(lcis==1L));
    ## $`1`
    ## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13
    ##
    ## $`2`
    ## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13
    ##
    ## $`3`
    ## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13
    ##
    ## $`4`
    ## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13
    ##
    ## $`5`
    ## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13
    ##
    ## $`6`
    ## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13
    ##
    ## $`7`
    ## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13
    ##
    ## $`8`
    ## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13
    ##
    ## $`9`
    ## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13
    ##
    ## $`10`
    ## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13
    ##
    ## $`11`
    ## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13
    ##
    ## $`12`
    ## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13
    ##
    ## $`13`
    ## [1] 1 2 3 4 14 13
    ##
    ## $`14`
    ## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13
    ##
    ## $`15`
    ## [1] 1 2 3 4 5 15 16 6 8 9 10 17 11 18 12 19 13
    ##
    ## $`16`
    ## [1] 1 2 3 4 5 15 16 6 8 9 10 17 11 18 12 19 13

    现在,如果您仔细查看上述组,您会发现可以重新排序 cns这样所有组都将按升序排列。它们不会是连续的,但我为原始问题设计的解决方案不需要连续;所需要的只是升序。

    例如,我们需要在 13 之前对第 14 列进行排序,并且我们需要在 6、8、9 等之前对第 15 和 16 列进行排序:
    ## recognizing the possibility of reordering to achieve perfect within-row ascending order, reorder cns to cns2
    cns2 <- cns[c(1,2,3,4,14,5,15,16,6,7,8,9,10,17,11,18,12,19,13)];
    cns2;
    ## [1] "Status" "Make" "Model"
    ## [4] "Kilometres" "Style/Trim" "Stock Number"
    ## [7] "Brakes" "Mfg Exterior Colour" "Engine"
    ## [10] "Number of Hours" "Front axle" "Rear axle"
    ## [13] "Suspension" "Tires" "Wheelbase"
    ## [16] "Engine (HP)" "Transmission" "Exterior Colour"
    ## [19] "Price"

    现在我们可以重新计算 lcis ,我现在将其称为 lcis2 ,并演示新的组订单:
    ## calculate lcis2 from cns2, and prove that we've successfully ordered each individual row under the 1/13 (now 1/19) break assumption
    lcis2 <- match(names(testlist),cns2);
    split(lcis2,cumsum(lcis2==1L));
    ## $`1`
    ## [1] 1 2 3 4 6 9 10 11 12 13 15 17 19
    ##
    ## $`2`
    ## [1] 1 2 3 4 6 9 10 11 12 13 15 17 19
    ##
    ## $`3`
    ## [1] 1 2 3 4 6 9 10 11 12 13 15 17 19
    ##
    ## $`4`
    ## [1] 1 2 3 4 6 9 10 11 12 13 15 17 19
    ##
    ## $`5`
    ## [1] 1 2 3 4 6 9 10 11 12 13 15 17 19
    ##
    ## $`6`
    ## [1] 1 2 3 4 6 9 10 11 12 13 15 17 19
    ##
    ## $`7`
    ## [1] 1 2 3 4 6 9 10 11 12 13 15 17 19
    ##
    ## $`8`
    ## [1] 1 2 3 4 6 9 10 11 12 13 15 17 19
    ##
    ## $`9`
    ## [1] 1 2 3 4 6 9 10 11 12 13 15 17 19
    ##
    ## $`10`
    ## [1] 1 2 3 4 6 9 10 11 12 13 15 17 19
    ##
    ## $`11`
    ## [1] 1 2 3 4 6 9 10 11 12 13 15 17 19
    ##
    ## $`12`
    ## [1] 1 2 3 4 6 9 10 11 12 13 15 17 19
    ##
    ## $`13`
    ## [1] 1 2 3 4 5 19
    ##
    ## $`14`
    ## [1] 1 2 3 4 6 9 10 11 12 13 15 17 19
    ##
    ## $`15`
    ## [1] 1 2 3 4 6 7 8 9 11 12 13 14 15 16 17 18 19
    ##
    ## $`16`
    ## [1] 1 2 3 4 6 7 8 9 11 12 13 14 15 16 17 18 19

    最后,我们可以运行整个解决方案,现在小心使用 2 后缀的变量名:
    ## now we can apply the preallocate/fill-in solution using cns2 and lcis2
    ## will use lris2 and df2 just to be consistent
    lris2 <- c(1L,cumsum(diff(lcis2)<=0L)+1L);
    df2 <- as.data.frame(testlist[match(1:length(cns2),lcis2)],stringsAsFactors=F)[0,];
    df2[max(lris2),] <- NA;
    df2;
    ## Status Make Model Kilometres Style.Trim Stock.Number Brakes Mfg.Exterior.Colour Engine Number.of.Hours Front.axle Rear.axle Suspension Tires Wheelbase Engine..HP. Transmission Exterior.Colour Price
    ## 1 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
    ## 2 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
    ## 3 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
    ## 4 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
    ## 5 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
    ## 6 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
    ## 7 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
    ## 8 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
    ## 9 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
    ## 10 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
    ## 11 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
    ## 12 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
    ## 13 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
    ## 14 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
    ## 15 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
    ## 16 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
    for (ci in 1:length(cns2)) { m <- lcis2==ci; df2[lris2[m],ci] <- do.call(c,testlist[m]); };
    df2;
    ## Status Make Model Kilometres Style.Trim Stock.Number Brakes Mfg.Exterior.Colour Engine Number.of.Hours Front.axle Rear.axle Suspension Tires Wheelbase Engine..HP. Transmission Exterior.Colour Price
    ## 1 New Peterbilt 367 Tri-Drive c/w 58'' Sleeper 3,360 km <NA> 12949 <NA> <NA> Cummins ISX15 (550 hp) 44 Dana Spicer D2000 (20,000lb) Dana T69-170 (wide track) t Peterbilt Air-Trak (66,000lb) <NA> 267'' <NA> RTLO18918B Fuller (18 speed) <NA> $217,770
    ## 2 New Kenworth T800 T/A Tractor 82,230 km <NA> 10720 <NA> <NA> Cummins ISX15 (550hp) 2,712 Dana Spicer D2000 (20,000 lb) Dana D46-170HPW (46,000 lb) ta Neway ADZ252 (52,000lb) Air <NA> 244'' <NA> Fuller 18 spd main AT1202 2 sp <NA> $199,500
    ## 3 New Kenworth T800 Tandem Tractor w/ 38'' Sleeper 98,521 km <NA> 10722 <NA> <NA> Cummins ISX15 (550hp) 2,790 Dana Spicer D2000 (20,000 lb) Dana D46-170HPW (46,000 lb) ta Neway ADZ252 (52,000lb) Air <NA> 244'' <NA> Fuller 18 spd main AT1202 2 sp <NA> $199,500
    ## 4 Used Kenworth W900 Tri-Drive Sleeper Truck Tractor 170,422 km <NA> 13227 <NA> <NA> Cummins ISX15 (600 hp) 4,925 Meritor FL941 (20,000 lb) Meritor RZ-166 (69,000 lb) Kenworth AG690 (69,000lb) Air <NA> 259'' <NA> 18 speed main & 4 speed au <NA> $197,750
    ## 5 New Peterbilt 367 T/A Wet-Kit Tractor c/w 58'' Sleeper 3,367 km <NA> 12180 <NA> <NA> Cummins ISX15 (550hp) 38 Dana Spicer E14621 (14,600 lb Dana D46-170 (46,000lb) ta Peterbilt Air-Trak (46,000lb) <NA> 244'' <NA> RTLO18918B Fuller (18 speed) <NA> $193,300
    ## 6 New Peterbilt 367 T/A Wet-Kit Tractor c/w 58'' Sleeper 3,421 km <NA> 12179 <NA> <NA> Cummins ISX15 (550hp) 46 Dana Spicer E14621 (14,600 lb Dana D46-170 (46,000lb) ta Peterbilt Air-Trak (46,000lb) <NA> 244'' <NA> RTLO18918B Fuller (18 speed) <NA> $193,300
    ## 7 New Peterbilt 367 T/A Wet-Kit Tractor c/w 58'' Sleeper 2,157 km <NA> 12181 <NA> <NA> Cummins ISX15 (550hp) 64 Dana Spicer E14621 (14,600 lb Dana D46-170 (46,000lb) ta Peterbilt Air-Trak (46,000lb) <NA> 244'' <NA> RTLO18918B Fuller (18 speed) <NA> $189,880
    ## 8 New Peterbilt 367 T/A Wet-Kit Tractor c/w 58'' Sleeper 3,444 km <NA> 12954 <NA> <NA> Cummins ISX15 (550hp) 45 Dana Spicer E14621 (14,600 lb Dana D46-170 (46,000lb) ta Peterbilt Air-Trak (46,000lb) <NA> 244'' <NA> RTLO18918B Fuller (18 speed) <NA> $189,880
    ## 9 New Peterbilt 367 T/A Wet-Kit Tractor c/w 58'' Sleeper 3,427 km <NA> 12955 <NA> <NA> Cummins ISX15 (550hp) 43 Dana Spicer E14621 (14,600 lb Dana D46-170 (46,000lb) ta Peterbilt Air-Trak (46,000lb) <NA> 244'' <NA> RTLO18918B Fuller (18 speed) <NA> $189,880
    ## 10 New Peterbilt 367 T/A Wet-Kit Tractor c/w 58'' Sleeper 3,982 km <NA> 12182 <NA> <NA> Cummins ISX15 (550hp) 78 Dana Spicer E14621 (14,600 lb Dana D46-170 (46,000lb) ta Peterbilt Air-Trak (46,000lb) <NA> 244'' <NA> RTLO18918B Fuller (18 speed) <NA> $189,880
    ## 11 New Peterbilt 367 T/A Wet-Kit Tractor c/w 58'' Sleeper 23,293 km <NA> 12953 <NA> <NA> Cummins ISX15 (550hp) 394 Dana Spicer E14621 (14,600 lb Dana D46-170 (46,000lb) ta Peterbilt Air-Trak (46,000lb) <NA> 244'' <NA> RTLO18918B Fuller (18 speed) <NA> $189,880
    ## 12 New Peterbilt 367 T/A Wet-Kit Tractor c/w 58'' Sleeper 27,215 km <NA> 12509 <NA> <NA> Cummins ISX15 (550hp) 458 Dana Spicer E14621 (14,600 lb Dana D46-170 (46,000lb) ta Peterbilt Air-Trak (46,000lb) <NA> 244'' <NA> RTLO18918B Fuller (18 speed) <NA> $186,600
    ## 13 Used Volvo VNL64T 780-730 72,000 km VNL64T780-730 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> $185,000
    ## 14 New Peterbilt 367 T/A Wet Kit Tractor c/w 58'' Sleeper 60,657 km <NA> 10838 <NA> <NA> Cummins ISX15 (550hp) 1,822 Dana Spicer E14621 (14,600 lb Dana D46-170HP (46,000lb) tand Peterbilt Air-Trak (46,000lb) <NA> 244'' <NA> RTLO18918B Fuller (18 speed) <NA> $171,800
    ## 15 Used International ProStar +122 36,236 km <NA> 463555 Air White Cummins ISX <NA> Arvin Meritor 13200 lb Arvin Meritor 40000 lb Int'l IROS 11R22.5 228 in 450 Eaton Fuller D/O (18 spd) White $168,750
    ## 16 Used International ProStar +122 33,000 km <NA> 463543 Air White Cummins ISX <NA> Arvin Meritor 13200 lb Arvin Meritor 46000 lb Int'l IROS 11R/22.5 236 in 475 Eaton Fuller D/O (18 spd) White $165,900

    现在,我意识到最好完全从“升序假设”(让我们称之为)转向 1/13 假设,我们可以通过更改 lris 来非常简单地做到这一点。计算。这将使我们无需重新订购 cns从我们收到的订单 unique()称呼。

    下面我将演示这一点,返回到无后缀的变量名,这将很有用,稍后会看到:
    ## change lris calculation to depend directly on 1/13 assumption; don't bother reordering
    cns <- unique(names(testlist));
    lcis <- match(names(testlist),cns);
    lris <- c(1L,cumsum(lcis[-1]==1L)+1L);
    df <- as.data.frame(testlist[match(1:length(cns),lcis)],stringsAsFactors=F)[0,];
    df[max(lris),] <- NA;
    for (ci in 1:length(cns)) { m <- lcis==ci; df[lris[m],ci] <- do.call(c,testlist[m]); };
    df;
    ## Status Make Model Kilometres Stock.Number Engine Number.of.Hours Front.axle Rear.axle Suspension Wheelbase Transmission Price Style.Trim Brakes Mfg.Exterior.Colour Tires Engine..HP. Exterior.Colour
    ## 1 New Peterbilt 367 Tri-Drive c/w 58'' Sleeper 3,360 km 12949 Cummins ISX15 (550 hp) 44 Dana Spicer D2000 (20,000lb) Dana T69-170 (wide track) t Peterbilt Air-Trak (66,000lb) 267'' RTLO18918B Fuller (18 speed) $217,770 <NA> <NA> <NA> <NA> <NA> <NA>
    ## 2 New Kenworth T800 T/A Tractor 82,230 km 10720 Cummins ISX15 (550hp) 2,712 Dana Spicer D2000 (20,000 lb) Dana D46-170HPW (46,000 lb) ta Neway ADZ252 (52,000lb) Air 244'' Fuller 18 spd main AT1202 2 sp $199,500 <NA> <NA> <NA> <NA> <NA> <NA>
    ## 3 New Kenworth T800 Tandem Tractor w/ 38'' Sleeper 98,521 km 10722 Cummins ISX15 (550hp) 2,790 Dana Spicer D2000 (20,000 lb) Dana D46-170HPW (46,000 lb) ta Neway ADZ252 (52,000lb) Air 244'' Fuller 18 spd main AT1202 2 sp $199,500 <NA> <NA> <NA> <NA> <NA> <NA>
    ## 4 Used Kenworth W900 Tri-Drive Sleeper Truck Tractor 170,422 km 13227 Cummins ISX15 (600 hp) 4,925 Meritor FL941 (20,000 lb) Meritor RZ-166 (69,000 lb) Kenworth AG690 (69,000lb) Air 259'' 18 speed main & 4 speed au $197,750 <NA> <NA> <NA> <NA> <NA> <NA>
    ## 5 New Peterbilt 367 T/A Wet-Kit Tractor c/w 58'' Sleeper 3,367 km 12180 Cummins ISX15 (550hp) 38 Dana Spicer E14621 (14,600 lb Dana D46-170 (46,000lb) ta Peterbilt Air-Trak (46,000lb) 244'' RTLO18918B Fuller (18 speed) $193,300 <NA> <NA> <NA> <NA> <NA> <NA>
    ## 6 New Peterbilt 367 T/A Wet-Kit Tractor c/w 58'' Sleeper 3,421 km 12179 Cummins ISX15 (550hp) 46 Dana Spicer E14621 (14,600 lb Dana D46-170 (46,000lb) ta Peterbilt Air-Trak (46,000lb) 244'' RTLO18918B Fuller (18 speed) $193,300 <NA> <NA> <NA> <NA> <NA> <NA>
    ## 7 New Peterbilt 367 T/A Wet-Kit Tractor c/w 58'' Sleeper 2,157 km 12181 Cummins ISX15 (550hp) 64 Dana Spicer E14621 (14,600 lb Dana D46-170 (46,000lb) ta Peterbilt Air-Trak (46,000lb) 244'' RTLO18918B Fuller (18 speed) $189,880 <NA> <NA> <NA> <NA> <NA> <NA>
    ## 8 New Peterbilt 367 T/A Wet-Kit Tractor c/w 58'' Sleeper 3,444 km 12954 Cummins ISX15 (550hp) 45 Dana Spicer E14621 (14,600 lb Dana D46-170 (46,000lb) ta Peterbilt Air-Trak (46,000lb) 244'' RTLO18918B Fuller (18 speed) $189,880 <NA> <NA> <NA> <NA> <NA> <NA>
    ## 9 New Peterbilt 367 T/A Wet-Kit Tractor c/w 58'' Sleeper 3,427 km 12955 Cummins ISX15 (550hp) 43 Dana Spicer E14621 (14,600 lb Dana D46-170 (46,000lb) ta Peterbilt Air-Trak (46,000lb) 244'' RTLO18918B Fuller (18 speed) $189,880 <NA> <NA> <NA> <NA> <NA> <NA>
    ## 10 New Peterbilt 367 T/A Wet-Kit Tractor c/w 58'' Sleeper 3,982 km 12182 Cummins ISX15 (550hp) 78 Dana Spicer E14621 (14,600 lb Dana D46-170 (46,000lb) ta Peterbilt Air-Trak (46,000lb) 244'' RTLO18918B Fuller (18 speed) $189,880 <NA> <NA> <NA> <NA> <NA> <NA>
    ## 11 New Peterbilt 367 T/A Wet-Kit Tractor c/w 58'' Sleeper 23,293 km 12953 Cummins ISX15 (550hp) 394 Dana Spicer E14621 (14,600 lb Dana D46-170 (46,000lb) ta Peterbilt Air-Trak (46,000lb) 244'' RTLO18918B Fuller (18 speed) $189,880 <NA> <NA> <NA> <NA> <NA> <NA>
    ## 12 New Peterbilt 367 T/A Wet-Kit Tractor c/w 58'' Sleeper 27,215 km 12509 Cummins ISX15 (550hp) 458 Dana Spicer E14621 (14,600 lb Dana D46-170 (46,000lb) ta Peterbilt Air-Trak (46,000lb) 244'' RTLO18918B Fuller (18 speed) $186,600 <NA> <NA> <NA> <NA> <NA> <NA>
    ## 13 Used Volvo VNL64T 780-730 72,000 km <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> $185,000 VNL64T780-730 <NA> <NA> <NA> <NA> <NA>
    ## 14 New Peterbilt 367 T/A Wet Kit Tractor c/w 58'' Sleeper 60,657 km 10838 Cummins ISX15 (550hp) 1,822 Dana Spicer E14621 (14,600 lb Dana D46-170HP (46,000lb) tand Peterbilt Air-Trak (46,000lb) 244'' RTLO18918B Fuller (18 speed) $171,800 <NA> <NA> <NA> <NA> <NA> <NA>
    ## 15 Used International ProStar +122 36,236 km 463555 Cummins ISX <NA> Arvin Meritor 13200 lb Arvin Meritor 40000 lb Int'l IROS 228 in Eaton Fuller D/O (18 spd) $168,750 <NA> Air White 11R22.5 450 White
    ## 16 Used International ProStar +122 33,000 km 463543 Cummins ISX <NA> Arvin Meritor 13200 lb Arvin Meritor 46000 lb Int'l IROS 236 in Eaton Fuller D/O (18 spd) $165,900 <NA> Air White 11R/22.5 475 White

    可以看到, df的列顺序不同于 df2 ,但我们可以证明数据与以下内容相同:
    ## prove df2 and df are identical, ignoring the column order difference
    identical(df,df2[names(df)]);
    ## [1] TRUE

    关于r - 在将列表转换为数据框或数据表时处理丢失的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31281754/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com