У меня есть набор данных, как показано ниже.
Из-за большого объема данных я загрузил его через пакет sparklyr
, поэтому могу использовать только операторы канала.
pos <- str_sub(csj$helpful,2)
neg1 <- str_sub(csj$helpful,4)
csj <- csj %>% mutate(neg=replace(helpful,stringr::str_sub(csj$helpful,4)==1,0))
csj <- csj %>% mutate(help=pos/neg)
csj
is.null(csj$helpful)
Я хочу создать столбец с именем «помощь», который является «первым номером полезного столбца/вторым номером полезного столбца».
Если второе число равно 0, мне нужно изменить второе число на 1, а затем разделить его.
Имя фрейма данных — csj
.
Но это не работает.
Буду рад, если кто-то поможет мне решить эту проблему.
После того, как я последовал совету @Sebastian Hoyos, я все же получил этот col1, col2, col3 как NAN, как показано на рисунке ниже. (Но пример, который он мне дал, сработал). Как мне решить эту проблему?
введите здесь описание изображения
+) После того, как я попробовал без as.numeric
части, я получил этот результат.
> csj %>%
+ mutate(col1 = stringi::stri_extract_first_regex(csj$helpful, pattern = "[0-9]"),#extract first number
+ col2 = stringi::stri_extract_last_regex(csj$helpful, pattern = "[0-9]"),#extract second
+ col3 = ifelse(col2 == 0, 1, col2 ),#change 0s to 1
+ help = col1/col3) #divide row1 and 3
# Source: lazy query [?? x 12]
# Database: spark_connection
`_c0` reviewerID asin helpful length_of_review overall unixReviewTime category col1 col2 col3 help
<int> <chr> <chr> <chr> <dbl> <chr> <chr> <chr> <chr> <chr> <chr> <dbl>
1 0 A1KLRMWW2FWPL4 31887 [0, 0] 172 5 1297468800 Clothes_s~ "" "" NA NaN
2 1 A2G5TCU2WDFZ65 31887 [0, 0] 306 5 1358553600 Clothes_s~ "" "" NA NaN
3 2 A1RLQXYNCMWRWN 31887 [0, 0] 312 5 1357257600 Clothes_s~ "" "" NA NaN
4 3 A8U3FAMSJVHS5 31887 [0, 0] 405 5 1398556800 Clothes_s~ "" "" NA NaN
5 4 A3GEOILWLK86XM 31887 [0, 0] 453 5 1394841600 Clothes_s~ "" "" NA NaN
6 5 A27UF1MSF3DB2 31887 [0, 0] 375 4 1396224000 Clothes_s~ "" "" NA NaN
7 6 A16GFPNVF4Y816 31887 [0, 0] 334 5 1399075200 Clothes_s~ "" "" NA NaN
8 7 A2M2APVYIB2U6K 31887 [0, 0] 158 5 1356220800 Clothes_s~ "" "" NA NaN
9 8 A1NJ71X3YPQNQ9 31887 [0, 0] 96 4 1384041600 Clothes_s~ "" "" NA NaN
10 9 A3EERSWHAI6SO 31887 [7, 8] 532 5 1349568000 Clothes_s~ "" "" NA NaN
# ... with more rows
>