#r #data.table #tidyverse #purrr
#r #данные.таблица #tidyverse #мурлыканье
Вопрос:
library(readr)
library(readxl)
library(tidyverse)
library(writexl)
library(purrr)
setwd("path")
file.list <- dir(pattern = "txt$")
Data_cleaner <- function(x) {
lines <- read_lines(x)
lower_lines <- tolower(lines)
natures_df <-as.data.frame(do.call(rbind, strsplit(lower_lines, "(?<=\dx) | for ", perl = TRUE)))
natures_df_clean <-
natures_df %>%
rename(
Quantity_dirty = V1,
Product = V2,
price_each = V3
)
Quantity_chr <-
gsub(
x = natures_df_clean$Quantity_dirty,
pattern = "x",
replacement = ""
)
Quantity <- as.numeric(Quantity_chr)
price_clean_df <- gsub("R", replacement = "", x = natures_df_clean$price_each)
price_clean <- gsub("each", replacement = "", x = price_clean_df)
Price <- as.numeric(price_clean)
natures_final_df <-
natures_df_clean %>%
mutate(
Price = Price,
Quantity = Quantity,
QuantityXPrice = Price * Quantity
)
Natures <- select(natures_final_df, Product, Quantity)
Natures
}
df = data.frame()
frame_frame <- map(file.list, Data_cleaner)
Total <- rbindlist(frame_frame)
Я пытался превратить текст во фреймы данных, а затем объединить все фреймы данных, но теперь я присоединяюсь к ним, и что-то вроде «маленький огурец» не будет объединяться, поэтому я получаю 2 экземпляра чего-то с одинаковым именем, даже когда я группирую, есть мысли?
Это текст, который я изменяю, и все они находятся в их собственных текстовых файлах
2x Small Cucumber for R 10 each
1x Tomatoes 1kg for R 16 each
1x Carrot 1 kg for R 14 each
1x Butter 500g for R 57 each
3x Beef rump steak 300g for R 45 each
2x Chicken Braai pack 1.1kg for R 75 each
2x Small Cucumber for R 10 each
1x Oyster Mushroom for R 20 each
1x Onions 1 kg for R 15 each
1x Asparagus 200g for R 45 each
1x Strawberry Punnet 250g for R 22 each
2x beef Fillet Steak 300g for R 54 each
1x Chicken flattie lemon and herb for R 85 each
1x Butter 500g for R 57 each
P.S Я новичок, поэтому извините, если это грязно.
Комментарии:
1. Пожалуйста, покажите нам ваш ожидаемый результат.
2. проверьте изображение, я не хочу, чтобы дубликаты в столбце продуктов были ожидаемым результатом.
3. Ваш текстовый файл содержит две строки, начинающиеся с
2x Small Cucumber
. Вот почему вы получаете дубликаты в вашем фрейме данных. Вы хотите удалить последнюю?4. я хочу, чтобы они сворачивались друг в друга, поэтому я получаю маленький огурец 4
Ответ №1:
Final <- Total %>% group_by(Product) %>% summarise(y = sum(Quantity))
Это решило мою проблему. group_by
Сначала я попробовал, но я этого не summarise(sum())
Quantity
сделал, поэтому он не свернул все мои дубликаты вместе.
Комментарии:
1. Пожалуйста, не публикуйте только код в качестве ответа, но также предоставьте объяснение, что делает ваш код и как он решает проблему вопроса. Ответы с объяснением обычно более полезны и более высокого качества и с большей вероятностью привлекут голоса.
2. Эй, извините, я опоздал и был слишком ленив, чтобы объяснять, но спасибо за напоминание.