Как удалить точку без последующего удаления 0, чтобы выполнить слияние - PullRequest
1 голос
/ 23 февраля 2020

У меня есть два кадра данных с такими столбцами:

 df1 <- c(1.11, 1.13, 1.12, 1.21, 1.22, 1.3, 1.4, 1.5, 2, 5, 10.1, 10.2, 
10.3, 11.1, 11.2, 13.1, 13.2, 12, 14.1, 14.21, 14.22, 14.29, 
15.11, 15.12, 15.13, 15.14, 15.2, 15.31, 15.32, 15.33, 15.42, 
15.49, 15.41, 15.43, 15.44, 15.51, 15.52, 15.53, 15.54, 16, 17.11, 
17.21, 17.12, 17.22, 17.23, 17.29, 17.3, 18.1, 18.2, 19.11, 19.12, 
19.2, 20.1, 20.21, 20.22, 20.23, 20.29, 21.01, 21.02, 21.09, 
22.12, 22.11, 22.13, 22.19, 22.21, 22.22, 22.3, 23.1, 23.2, 23.3, 
24.11, 24.12, 24.13, 24.3, 24.23, 24.21, 24.24, 24.22, 24.29, 
25.11, 25.19, 25.2, 26.1, 26.94, 26.95, 26.93, 26.92, 26.91, 
26.96, 26.99, 27.1, 27.2, 27.31, 27.32, 28.11, 28.12, 28.13, 
28.91, 28.92, 28.93, 28.99, 29.11, 29.12, 29.13, 29.14, 29.15, 
29.19, 29.21, 29.22, 29.29, 29.24, 29.23, 29.25, 29.26, 29.27, 
29.3, 30, 31.1, 31.2, 31.3, 31.4, 31.5, 31.9, 32.1, 32.2, 32.3, 
33.11, 33.12, 33.13, 33.2, 33.3, 34.1, 34.2, 34.3, 35.11, 35.12, 
35.2, 35.3, 35.91, 35.92, 35.99, 36.1, 36.91, 36.92, 36.93, 36.94, 
36.99, 37.1, 37.2, 40.1, 40.2, 40.3, 41, 45.1, 45.2, 45.3, 45.4, 
45.5, 50.1, 50.2, 50.3, 50.4, 50.5, 51.1, 51.21, 51.22, 51.31, 
51.39, 51.41, 51.42, 51.43, 51.49, 51.5, 51.9, 52.11, 52.19, 
52.2, 52.32, 52.31, 52.33, 52.34, 52.39, 52.4, 52.51, 52.52, 
52.59, 52.6, 55.1, 55.2, 60.1, 60.21, 60.22, 60.23, 60.3, 61.1, 
61.2, 62.1, 62.2, 63.01, 63.02, 63.03, 63.04, 63.09, 64.11, 64.12, 
64.2, 65.11, 65.19, 65.91, 65.92, 65.99, 66.01, 66.03, 66.02, 
67.11, 67.12, 67.19, 67.2, 70.1, 70.2, 71.11, 71.12, 71.13, 71.21, 
71.22, 71.23, 71.29, 71.3, 72.1, 72.2, 72.3, 72.4, 72.5, 72.9, 
73.1, 73.2, 74.11, 74.12, 74.13, 74.14, 74.21, 74.22, 74.3, 74.91, 
74.92, 74.93, 74.94, 74.95, 74.99, 75.11, 75.12, 75.13, 75.14, 
75.21, 75.22, 75.23, 75.3, 80.1, 80.21, 80.22, 80.3, 80.9, 85.11, 
85.12, 85.19, 85.2, 85.31, 85.32, 90, 91.11, 91.12, 91.2, 91.91, 
91.92, 91.99, 92.11, 92.12, 92.13, 92.14, 92.19, 92.2, 92.31, 
92.32, 92.33, 92.41, 92.49, 93.01, 93.02, 93.03, 93.09, 95, 99
)



df2 <-  c(111L, 112L, 113L, 121L, 122L, 130L, 140L, 200L, 1511L, 1549L, 
1520L, 1513L, 1512L, 1514L, 1532L, 1531L, 1541L, 1544L, 1542L, 
1543L, 150L, 501L, 502L, 1551L, 1552L, 1553L, 1554L, 9600L, 9700L, 
2429L, 1533L, 1600L, 1810L, 1820L, 2330L, 2411L, 2412L, 2421L, 
2413L, 2430L, 2519L, 2520L, 2010L, 2021L, 2022L, 2023L, 2029L, 
1920L, 3699L, 2101L, 2102L, 2699L, 2109L, 1711L, 1712L, 1729L, 
2610L, 5260L, 1721L, 1730L, 1722L, 1723L, 3720L, 1410L, 1429L, 
1421L, 1422L, 1030L, 2710L, 2731L, 2891L, 2892L, 3520L, 3710L, 
NA, 1310L, 1200L, 1320L, 2720L, 2732L, 1010L, 1020L, 2310L, 2320L, 
1110L, 2422L, 2423L, 2424L, 2927L, 2914L, 2919L, 2929L, 3190L, 
3311L, 3312L, 3313L, 3000L, 3320L, 3330L, 1911L, 1912L, 2899L, 
2511L, 3140L, 3511L, 3512L, 3694L, 2692L, 2693L, 2694L, 2695L, 
2696L, 2691L, 3691L, 3692L, 3693L, 2221L, 2926L, 3150L, 3592L, 
2893L, 2915L, 2921L, 3610L, 2811L, 2812L, 2813L, 2930L, 3420L, 
2912L, 2911L, 2922L, 2923L, 2924L, 2925L, 7250L, 2913L, 3599L, 
3410L, 3430L, 3591L, 3530L, 3110L, 3120L, 3210L, 2213L, 2230L, 
3220L, 3230L, 3130L, 2211L, 2212L, 2219L, 2222L)

Как настроить первый, чтобы использовать его для слияния со вторым? Первый - это столбец символов, так что мне нужно заменить . out. Проблема в том, что если я делаю такую ​​вещь, значение, равное 1,3, становится 13, а не 130, как хотелось бы. Если я умножу его на 10, другие обычные значения не будут совпадать.

Ответы [ 2 ]

2 голосов
/ 23 февраля 2020

Сначала можно использовать format(df1, nsmall = 2L), а затем удалить все ..

library(stringr)
library(dplyr)  #for the pipe "%>%"
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
df1 <- c(1.11, 1.13, 1.12, 1.21, 1.22, 1.3, 1.4, 1.5, 2, 5, 10.1, 10.2, 
         10.3, 11.1, 11.2, 13.1, 13.2, 12, 14.1, 14.21, 14.22, 14.29, 
         15.11, 15.12, 15.13, 15.14, 15.2, 15.31, 15.32, 15.33, 15.42, 
         15.49, 15.41, 15.43, 15.44, 15.51, 15.52, 15.53, 15.54, 16, 17.11, 
         17.21, 17.12, 17.22, 17.23, 17.29, 17.3, 18.1, 18.2, 19.11, 19.12, 
         19.2, 20.1, 20.21, 20.22, 20.23, 20.29, 21.01, 21.02, 21.09, 
         22.12, 22.11, 22.13, 22.19, 22.21, 22.22, 22.3, 23.1, 23.2, 23.3, 
         24.11, 24.12, 24.13, 24.3, 24.23, 24.21, 24.24, 24.22, 24.29, 
         25.11, 25.19, 25.2, 26.1, 26.94, 26.95, 26.93, 26.92, 26.91, 
         26.96, 26.99, 27.1, 27.2, 27.31, 27.32, 28.11, 28.12, 28.13, 
         28.91, 28.92, 28.93, 28.99, 29.11, 29.12, 29.13, 29.14, 29.15, 
         29.19, 29.21, 29.22, 29.29, 29.24, 29.23, 29.25, 29.26, 29.27, 
         29.3, 30, 31.1, 31.2, 31.3, 31.4, 31.5, 31.9, 32.1, 32.2, 32.3, 
         33.11, 33.12, 33.13, 33.2, 33.3, 34.1, 34.2, 34.3, 35.11, 35.12, 
         35.2, 35.3, 35.91, 35.92, 35.99, 36.1, 36.91, 36.92, 36.93, 36.94, 
         36.99, 37.1, 37.2, 40.1, 40.2, 40.3, 41, 45.1, 45.2, 45.3, 45.4, 
         45.5, 50.1, 50.2, 50.3, 50.4, 50.5, 51.1, 51.21, 51.22, 51.31, 
         51.39, 51.41, 51.42, 51.43, 51.49, 51.5, 51.9, 52.11, 52.19, 
         52.2, 52.32, 52.31, 52.33, 52.34, 52.39, 52.4, 52.51, 52.52, 
         52.59, 52.6, 55.1, 55.2, 60.1, 60.21, 60.22, 60.23, 60.3, 61.1, 
         61.2, 62.1, 62.2, 63.01, 63.02, 63.03, 63.04, 63.09, 64.11, 64.12, 
         64.2, 65.11, 65.19, 65.91, 65.92, 65.99, 66.01, 66.03, 66.02, 
         67.11, 67.12, 67.19, 67.2, 70.1, 70.2, 71.11, 71.12, 71.13, 71.21, 
         71.22, 71.23, 71.29, 71.3, 72.1, 72.2, 72.3, 72.4, 72.5, 72.9, 
         73.1, 73.2, 74.11, 74.12, 74.13, 74.14, 74.21, 74.22, 74.3, 74.91, 
         74.92, 74.93, 74.94, 74.95, 74.99, 75.11, 75.12, 75.13, 75.14, 
         75.21, 75.22, 75.23, 75.3, 80.1, 80.21, 80.22, 80.3, 80.9, 85.11, 
         85.12, 85.19, 85.2, 85.31, 85.32, 90, 91.11, 91.12, 91.2, 91.91, 
         91.92, 91.99, 92.11, 92.12, 92.13, 92.14, 92.19, 92.2, 92.31, 
         92.32, 92.33, 92.41, 92.49, 93.01, 93.02, 93.03, 93.09, 95, 99
)

df1 %>% 
  format(nsmall = 2L) %>%
  as.character() %>%
  str_remove('\\.')
#>   [1] " 111" " 113" " 112" " 121" " 122" " 130" " 140" " 150" " 200" " 500"
#>  [11] "1010" "1020" "1030" "1110" "1120" "1310" "1320" "1200" "1410" "1421"
#>  [21] "1422" "1429" "1511" "1512" "1513" "1514" "1520" "1531" "1532" "1533"
#>  [31] "1542" "1549" "1541" "1543" "1544" "1551" "1552" "1553" "1554" "1600"
#>  [41] "1711" "1721" "1712" "1722" "1723" "1729" "1730" "1810" "1820" "1911"
#>  [51] "1912" "1920" "2010" "2021" "2022" "2023" "2029" "2101" "2102" "2109"
#>  [61] "2212" "2211" "2213" "2219" "2221" "2222" "2230" "2310" "2320" "2330"
#>  [71] "2411" "2412" "2413" "2430" "2423" "2421" "2424" "2422" "2429" "2511"
#>  [81] "2519" "2520" "2610" "2694" "2695" "2693" "2692" "2691" "2696" "2699"
#>  [91] "2710" "2720" "2731" "2732" "2811" "2812" "2813" "2891" "2892" "2893"
#> [101] "2899" "2911" "2912" "2913" "2914" "2915" "2919" "2921" "2922" "2929"
#> [111] "2924" "2923" "2925" "2926" "2927" "2930" "3000" "3110" "3120" "3130"
#> [121] "3140" "3150" "3190" "3210" "3220" "3230" "3311" "3312" "3313" "3320"
#> [131] "3330" "3410" "3420" "3430" "3511" "3512" "3520" "3530" "3591" "3592"
#> [141] "3599" "3610" "3691" "3692" "3693" "3694" "3699" "3710" "3720" "4010"
#> [151] "4020" "4030" "4100" "4510" "4520" "4530" "4540" "4550" "5010" "5020"
#> [161] "5030" "5040" "5050" "5110" "5121" "5122" "5131" "5139" "5141" "5142"
#> [171] "5143" "5149" "5150" "5190" "5211" "5219" "5220" "5232" "5231" "5233"
#> [181] "5234" "5239" "5240" "5251" "5252" "5259" "5260" "5510" "5520" "6010"
#> [191] "6021" "6022" "6023" "6030" "6110" "6120" "6210" "6220" "6301" "6302"
#> [201] "6303" "6304" "6309" "6411" "6412" "6420" "6511" "6519" "6591" "6592"
#> [211] "6599" "6601" "6603" "6602" "6711" "6712" "6719" "6720" "7010" "7020"
#> [221] "7111" "7112" "7113" "7121" "7122" "7123" "7129" "7130" "7210" "7220"
#> [231] "7230" "7240" "7250" "7290" "7310" "7320" "7411" "7412" "7413" "7414"
#> [241] "7421" "7422" "7430" "7491" "7492" "7493" "7494" "7495" "7499" "7511"
#> [251] "7512" "7513" "7514" "7521" "7522" "7523" "7530" "8010" "8021" "8022"
#> [261] "8030" "8090" "8511" "8512" "8519" "8520" "8531" "8532" "9000" "9111"
#> [271] "9112" "9120" "9191" "9192" "9199" "9211" "9212" "9213" "9214" "9219"
#> [281] "9220" "9231" "9232" "9233" "9241" "9249" "9301" "9302" "9303" "9309"
#> [291] "9500" "9900"

Создано в 2020-02-22 с помощью пакета Представить (v0.3.0)

0 голосов
/ 23 февраля 2020

Умножьте каждый элемент в первом столбце на 100, превратив его в число c.

То есть

as.numeric(df1)*100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...