同时选择和pivot_wider

时间:2020-10-12 17:14:40

标签: r tidyverse

我正在尝试修改以下数据框,以包括两个新列:一列基于氧气列中的“ +”或“-”元素,一个表示正氧含量,一个表示负氧含量。下面是我的代码:

df2 <- pivot_wider(df, names_from = Oxygen, values_from = concentration)

但是,最终结果仅显示-Oxygen列的NA。出了什么问题?

使用的图书馆包括tidyverse。

下面是我的数据框:

structure(list(Sample = c(1, 2, 3, 4, 5, 6, 43, 46, 47, 83, 84, 
86, 87, 125, 126, 127, 129, 165, 167, 168, 169, 170, 206, 207, 
209, 210, 211, 247, 248, 249, 251, 252, 288, 289, 290, 291, 293, 
329, 330, 331, 332, 333, 370, 371, 372, 373, 374, 375, 411, 412, 
413, 414, 415, 416, 452, 453, 454, 455, 456, 457, 493, 494, 495, 
497, 498, 534, 535, 536, 537, 538, 539, 575, 576, 577, 578, 579, 
580, 616, 618, 619, 620, 621, 657, 658, 659, 660, 662, 698, 699, 
700, 701, 702, 703, 739, 740, 741, 742, 743, 744, 780, 781, 782, 
783, 784, 785, 821, 822, 823, 824, 825, 826, 862, 863, 864, 865, 
866, 867, 905, 906, 907, 908, 944, 945, 947, 948, 985, 986, 987, 
988, 990, 1026, 1027, 1028, 1029, 1030, 1031, 1067, 1068, 1069, 
1070, 1071, 1072, 1108, 1109, 1110, 1111, 1112, 1113, 1149, 1150, 
1151, 1152, 1153, 1154, 1190, 1192, 1193, 1194, 1195, 1231, 1232, 
1233, 1234, 1236, 1272, 1273, 1274, 1275, 1276, 1277, 1313, 1314, 
1315, 1316, 1317, 1318, 1354, 1355, 1357, 1358, 1359, 1395, 1396, 
1397, 1398, 1399, 1400, 1436, 1437, 1438, 1439, 1440, 1441, 1477, 
1478, 1479, 1480, 1481, 1482, 1518, 1519, 1520, 1521, 1522, 1523, 
1559, 1560, 1561, 1562, 1563, 1564, 1600, 1601, 1602, 1603, 1604, 
1605, 1641, 1642, 1643, 1644, 1645, 1646, 1682, 1683, 1684, 1685, 
1686, 1687, 1723, 1724, 1725, 1726, 1727, 1728, 1764, 1767, 1768, 
1769, 1806, 1807, 1846, 1848, 1849, 1850, 1887, 1888, 1890, 1891, 
1892, 1928, 1929, 1930, 1932, 1933, 1969, 1970, 1971, 1972, 1974, 
2010, 2011, 2012, 2013, 2014, 2051, 2052, 2053, 2054, 2055, 2056, 
2092, 2093, 2094, 2095, 2096, 2097, 2133, 2134, 2135, 2136, 2137, 
2138, 2174, 2175, 2176, 2177, 2178, 2179, 2215, 2217, 2218, 2219, 
2220, 2256, 2257, 2258, 2259, 2260, 2297, 2298, 2299, 2300, 2301, 
2302, 2338, 2340, 2341, 2342, 2343, 2379, 2380, 2381, 2382, 2384, 
2420, 2421, 2422, 2423, 2424, 2425, 2461, 2462, 2463, 2464, 2465, 
2466, 2502, 2503, 2504, 2505, 2506, 2507, 2543, 2544, 2545, 2546, 
2547, 2548, 2584, 2585, 2586, 2587, 2588, 2589), Drug = c("Ab1", 
"Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab2", "Ab5", "Ab6", "Ab1", 
"Ab2", "Ab4", "Ab5", "Ab2", "Ab3", "Ab4", "Ab6", "Ab1", "Ab3", 
"Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab4", "Ab5", "Ab6", "Ab1", 
"Ab2", "Ab3", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab6", 
"Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab1", "Ab2", "Ab3", "Ab4", 
"Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", 
"Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab5", 
"Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", 
"Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab3", "Ab4", "Ab5", "Ab6", 
"Ab1", "Ab2", "Ab3", "Ab4", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", 
"Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", 
"Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", 
"Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab3", 
"Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab4", "Ab5", "Ab1", "Ab2", 
"Ab3", "Ab4", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", 
"Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", 
"Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", 
"Ab1", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", 
"Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", 
"Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab4", "Ab5", "Ab6", 
"Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", 
"Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", 
"Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", 
"Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", 
"Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", 
"Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", 
"Ab1", "Ab4", "Ab5", "Ab6", "Ab2", "Ab3", "Ab1", "Ab3", "Ab4", 
"Ab5", "Ab1", "Ab2", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", 
"Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab6", "Ab1", "Ab2", 
"Ab3", "Ab4", "Ab5", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", 
"Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", 
"Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", 
"Ab1", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", 
"Ab5", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab3", 
"Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab6", "Ab1", 
"Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", 
"Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", 
"Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", 
"Ab5", "Ab6"), concentration = c(538, 40, 7300, 530, 127, 230, 
50, 140, 215, 440, 50, 540, 120, 3850, 12340, 5090, 3190, 610, 
6360, 520, 140, 190, 500, 30, 460, 120, 190, 350, 30, 6070, 50, 
150, 370, 40, 6670, 440, 220, 3820, 3860, 11960, 5350, 2000, 
2570, 1670, 11390, 3950, 1170, 810, 3240, 2610, 11840, 4400, 
1580, 1900, 320, 30, 6150, 300, 110, 150, 2560, 1660, 11910, 
1120, 870, 3830, 3610, 12320, 5440, 2040, 2860, 2810, 1840, 11250, 
2730, 1040, 1080, 3430, 12440, 5160, 1770, 2230, 400, 90, 3480, 
230, 90, 490, 120, 3230, 270, 170, 110, 550, 150, 3570, 330, 
190, 120, 430, 110, 3010, 240, 150, 130, 690, 120, 4050, 270, 
200, 130, 660, 80, 3530, 220, 160, 80, 3530, 260, 170, 110, 680, 
70, 220, 160, 1240, 1430, 3800, 4700, 990, 560, 460, 2770, 3500, 
310, 330, 1120, 1230, 3000, 5000, 720, 890, 910, 860, 2930, 4540, 
480, 590, 1410, 1550, 3990, 5140, 900, 1170, 1710, 4060, 5440, 
1120, 1290, 690, 780, 2830, 3390, 470, 1650, 1820, 4220, 5430, 
990, 1470, 2630, 530, 4050, 580, 350, 380, 1230, 120, 280, 120, 
110, 1860, 700, 3720, 700, 440, 500, 1290, 230, 4020, 300, 170, 
140, 2920, 640, 4650, 690, 380, 390, 1790, 880, 4320, 830, 530, 
620, 970, 200, 3740, 310, 190, 120, 2880, 700, 4080, 760, 470, 
520, 1450, 90, 5310, 920, 150, 140, 1360, 60, 5190, 800, 130, 
120, 1370, 100, 5100, 1040, 140, 140, 1250, 770, 130, 110, 130, 
5430, 1710, 5530, 1100, 170, 1390, 110, 1070, 160, 140, 1540, 
100, 5720, 170, 170, 1260, 30, 4140, 260, 40, 710, 20, 3530, 
220, 80, 1000, 40, 3720, 210, 80, 50, 610, 30, 3710, 180, 60, 
50, 2030, 30, 3820, 240, 70, 60, 720, 20, 3590, 180, 80, 50, 
820, 3710, 160, 70, 50, 660, 20, 3450, 160, 60, 310, 80, 4910, 
370, 130, 80, 230, 3830, 260, 120, 90, 230, 100, 3910, 410, 120, 
190, 60, 4210, 240, 100, 80, 320, 70, 4220, 330, 120, 60, 220, 
80, 3910, 320, 120, 110, 220, 50, 3830, 260, 100, 80, 20, 10, 
40, 10, 10, 10), Oxygen = c("+", "+", "+", "+", "+", "+", "+", 
"+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "-", "-", "-", 
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", 
"-", "-", "-", "-", "+", "+", "+", "+", "+", "+", "+", "+", "+", 
"+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", 
"+", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", 
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "+", "+", "+", 
"+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", 
"+", "+", "+", "+", "+", "+", "+", "-", "-", "-", "-", "-", "-", 
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", 
"-", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", 
"+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "-", "-", 
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", 
"-", "-", "-", "-", "-", "-", "-", "+", "+", "+", "+", "+", "+", 
"+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", 
"+", "+", "+", "+", "-", "-", "-", "-", "-", "-", "-", "-", "-", 
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", 
"-", "-", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", 
"+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "-", "-", 
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", 
"-", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", 
"+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "-", "-", "-", 
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", 
"-", "-", "-", "-", "-", "-", "+", "+", "+", "+", "+", "+", "+", 
"+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", 
"+", "+", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", 
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-"
), Donor = c("D1", "D1", "D1", "D1", "D1", "D1", "D1", "D1", 
"D1", "D1", "D1", "D1", "D1", "D1", "D1", "D1", "D1", "D1", "D1", 
"D1", "D1", "D1", "D1", "D1", "D1", "D1", "D1", "D1", "D1", "D1", 
"D1", "D1", "D1", "D1", "D1", "D1", "D1", "D2", "D2", "D2", "D2", 
"D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", 
"D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", 
"D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", 
"D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D3", "D3", "D3", 
"D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", 
"D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", 
"D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", 
"D3", "D3", "D3", "D3", "D3", "D3", "D3", "D4", "D4", "D4", "D4", 
"D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", 
"D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", 
"D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", 
"D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D5", "D5", "D5", 
"D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", 
"D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", 
"D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", 
"D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", 
"D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", 
"D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", 
"D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", 
"D6", "D6", "D6", "D6", "D6", "D7", "D7", "D7", "D7", "D7", "D7", 
"D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", 
"D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", 
"D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", 
"D7", "D7", "D7", "D7", "D7", "D8", "D8", "D8", "D8", "D8", "D8", 
"D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", 
"D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", 
"D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", 
"D8", "D8", "D8", "D8", "D8", "D8", "D8"), Illness = c("pneumonia", 
"pneumonia", "pneumonia", "pneumonia", "pneumonia", "pneumonia", 
"gastro", "gastro", "gastro", "TB", "TB", "TB", "TB", "lyme", 
"lyme", "lyme", "lyme", "pneumonia", "pneumonia", "pneumonia", 
"pneumonia", "pneumonia", "gastro", "gastro", "gastro", "gastro", 
"gastro", "TB", "TB", "TB", "TB", "TB", "lyme", "lyme", "lyme", 
"lyme", "lyme", "pneumonia", "pneumonia", "pneumonia", "pneumonia", 
"pneumonia", "gastro", "gastro", "gastro", "gastro", "gastro", 
"gastro", "TB", "TB", "TB", "TB", "TB", "TB", "lyme", "lyme", 
"lyme", "lyme", "lyme", "lyme", "pneumonia", "pneumonia", "pneumonia", 
"pneumonia", "pneumonia", "gastro", "gastro", "gastro", "gastro", 
"gastro", "gastro", "TB", "TB", "TB", "TB", "TB", "TB", "lyme", 
"lyme", "lyme", "lyme", "lyme", "pneumonia", "pneumonia", "pneumonia", 
"pneumonia", "pneumonia", "gastro", "gastro", "gastro", "gastro", 
"gastro", "gastro", "TB", "TB", "TB", "TB", "TB", "TB", "lyme", 
"lyme", "lyme", "lyme", "lyme", "lyme", "pneumonia", "pneumonia", 
"pneumonia", "pneumonia", "pneumonia", "pneumonia", "gastro", 
"gastro", "gastro", "gastro", "gastro", "gastro", "TB", "TB", 
"TB", "TB", "lyme", "lyme", "lyme", "lyme", "pneumonia", "pneumonia", 
"pneumonia", "pneumonia", "pneumonia", "gastro", "gastro", "gastro", 
"gastro", "gastro", "gastro", "TB", "TB", "TB", "TB", "TB", "TB", 
"lyme", "lyme", "lyme", "lyme", "lyme", "lyme", "pneumonia", 
"pneumonia", "pneumonia", "pneumonia", "pneumonia", "pneumonia", 
"gastro", "gastro", "gastro", "gastro", "gastro", "TB", "TB", 
"TB", "TB", "TB", "lyme", "lyme", "lyme", "lyme", "lyme", "lyme", 
"pneumonia", "pneumonia", "pneumonia", "pneumonia", "pneumonia", 
"pneumonia", "gastro", "gastro", "gastro", "gastro", "gastro", 
"TB", "TB", "TB", "TB", "TB", "TB", "lyme", "lyme", "lyme", "lyme", 
"lyme", "lyme", "pneumonia", "pneumonia", "pneumonia", "pneumonia", 
"pneumonia", "pneumonia", "gastro", "gastro", "gastro", "gastro", 
"gastro", "gastro", "TB", "TB", "TB", "TB", "TB", "TB", "lyme", 
"lyme", "lyme", "lyme", "lyme", "lyme", "pneumonia", "pneumonia", 
"pneumonia", "pneumonia", "pneumonia", "pneumonia", "gastro", 
"gastro", "gastro", "gastro", "gastro", "gastro", "TB", "TB", 
"TB", "TB", "TB", "TB", "lyme", "lyme", "lyme", "lyme", "pneumonia", 
"pneumonia", "gastro", "gastro", "gastro", "gastro", "TB", "TB", 
"TB", "TB", "TB", "lyme", "lyme", "lyme", "lyme", "lyme", "pneumonia", 
"pneumonia", "pneumonia", "pneumonia", "pneumonia", "gastro", 
"gastro", "gastro", "gastro", "gastro", "TB", "TB", "TB", "TB", 
"TB", "TB", "lyme", "lyme", "lyme", "lyme", "lyme", "lyme", "pneumonia", 
"pneumonia", "pneumonia", "pneumonia", "pneumonia", "pneumonia", 
"gastro", "gastro", "gastro", "gastro", "gastro", "gastro", "TB", 
"TB", "TB", "TB", "TB", "lyme", "lyme", "lyme", "lyme", "lyme", 
"pneumonia", "pneumonia", "pneumonia", "pneumonia", "pneumonia", 
"pneumonia", "gastro", "gastro", "gastro", "gastro", "gastro", 
"TB", "TB", "TB", "TB", "TB", "lyme", "lyme", "lyme", "lyme", 
"lyme", "lyme", "pneumonia", "pneumonia", "pneumonia", "pneumonia", 
"pneumonia", "pneumonia", "gastro", "gastro", "gastro", "gastro", 
"gastro", "gastro", "TB", "TB", "TB", "TB", "TB", "TB", "lyme", 
"lyme", "lyme", "lyme", "lyme", "lyme")), row.names = c(NA, -345L
), class = c("tbl_df", "tbl", "data.frame"))

1 个答案:

答案 0 :(得分:0)

sample列是您的问题,因为每个样本都是DrugDonorIllnessconcentration和{{1 }}(+或-)。 Oxygen的第一个-值发生在示例165。您的尝试将在Oxygen列中插入NA的几行,因此,直到您单击示例165(它将具有{{ -列的1}}值。

NA

按照注释中建议的Bas删除+列可以解决此问题,但是我不能从问题中看出这是否是您想要的。如果您需要转换后的数据中的样本ID,那么我们需要更多地了解所需输出的样子。

library(dplyr)
df %>% filter(Oxygen == "-")
# A tibble: 170 x 6
   Sample Drug  concentration Oxygen Donor Illness  
    <dbl> <chr>         <dbl> <chr>  <chr> <chr>    
 1    165 Ab1             610 -      D1    pneumonia
 2    167 Ab3            6360 -      D1    pneumonia
 3    168 Ab4             520 -      D1    pneumonia
 4    169 Ab5             140 -      D1    pneumonia
 5    170 Ab6             190 -      D1    pneumonia
 6    206 Ab1             500 -      D1    gastro   
 7    207 Ab2              30 -      D1    gastro   
 8    209 Ab4             460 -      D1    gastro   
 9    210 Ab5             120 -      D1    gastro   
10    211 Ab6             190 -      D1    gastro   
# ... with 160 more rows