Thanks Karim. linio.tv is in the email. In the last part. El oct 11, 2015 12:39 AM, "Karim Mezhoud" <kmezhoud at gmail.com> escribi?:> Hi, > omit unlist and test. otherwise you can use apply function. > > draft: > > df1 <- apply(linio.tv, 1, function(x) strsplit(x[,idproductio], > "[^A-Z0-9-]+")) > > fct <- function(linio.tv){ > > if(any(grep("[A-Z][0-9]", linio.tv[,idx_productio]))) { > > linio.tv[,idx(id)] <- linio.tv[,idx_productio] > > } > > else { > linio.tv[,idx(id)]<- NA > } > } > > df2 <- apply(df1, 1, function(x) fct(x)) > > I can't test this draft because I have not linio.tv > > > Karim > > > for (i in 1:nrow(linio.tv)) { > > v <- unlist(strsplit(linio.tv$producto[i], "[^A-Z0-9-]+")) # > isolate tokens > > if(any(grep("[A-Z][0-9]", v))) { > > linio.tv$id[i] <- v[grep("[A-Z][0-9]", v)] > > } > > else { > linio.tv$id[i] <- NA > } > } > > On Sun, Oct 11, 2015 at 6:07 AM, Omar Andr? Gonz?les D?az < > oma.gonzales at gmail.com> wrote: > >> Hi Boris, >> >> I've modified a little the for loop to catch the IDs (if there is any) >> otherwise to put NAs. This is for another data set. >> >> >> >> for (i in 1:nrow(linio.tv)) { >> >> v <- unlist(strsplit(linio.tv$producto[i], "[^A-Z0-9-]+")) # >> isolate tokens >> >> if(any(grep("[A-Z][0-9]", v))) { >> >> linio.tv$id[i] <- v[grep("[A-Z][0-9]", v)] >> >> } >> >> else { >> linio.tv$id[i] <- NA >> } >> } >> >> >> I get this warning messages, nevertheless the IDs column get the correct >> values: >> >> Warning messages: >> 1: In linio.tv$id[i] <- v[grep("[A-Z][0-9]", v)] : >> number of items to replace is not a multiple of replacement length >> 2: In linio.tv$id[i] <- v[grep("[A-Z][0-9]", v)] : >> number of items to replace is not a multiple of replacement length >> >> >> The problem: >> >> There are entries where the grep part is not specific enough. >> >> Like this one: "UN50JU6500-NEGRO". It satifies the rule in: >> >> linio.tv$id[i] <- v[grep("[A-Z][0-9]", v)] , but is not supposed to take >> also: "UN50JU6500-NEGRO" entirely, only this part: "UN50JU6500". >> >> >> I've noticed this rule: the IDs can have at maxium 1 letter after the "-". >> If it contains more than 1, that part should not be considered. >> >> "TC-L42AS610" >> >> Also IDs can start with numbers: 1,2, or 3. >> >> "KDL-40R354B" >> >> >> >> >> May you clarify to me if it's something that can be done within R? I'm >> trying to figure this out, but with any good result. >> >> I could cleaned with "sub()" (there is only one entry giving me troubles) >> but the idea is not to have "technical debt" for the future. >> >> >> >> >> This is the new data set, I'm talking about: >> >> >> >> >> >> >> linio.tv <- structure(list(id = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), marca = c("LG", "SAMSUNG", >> "SAMSUNG", "SAMSUNG", "LG", "LG", "LG", "LG", "LG", "LG", "LG", >> "SAMSUNG", "LG", "LG", "SAMSUNG", "LG", "LG", "LG", "LG", "SAMSUNG", >> "LG", "LG", "LG", "SONY", "SAMSUNG", "LG", "LG", "SAMSUNG", "SONY", >> "SAMSUNG", "LG", "LG", "LG", "IMACO", "SAMSUNG", "LG", "SAMSUNG", >> "SAMSUNG", "LG", "HAIER", "LG", "SONY", "SAMSUNG", "LG", "LG", >> "LG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "SONY", "HISENSE", "LG", >> "SAMSUNG", "LG", "SAMSUNG", "LG", "SAMSUNG", "SAMSUNG", "CONTINENTAL", >> "LG", "IMACO", "AOC", "AOC", "SAMSUNG", "LG", "SONY", "LG", "LG", >> "SONY", "SAMSUNG", "SAMSUNG", "PANASONIC", "LG", "SAMSUNG", "NEX", >> "IMACO", "LG", "LG", "CONTINENTAL", "SONY", "LG", "LG", "SAMSUNG", >> "LG", "LG", "LG", "LG", "LG", "SAMSUNG", "LG", "LG", "SAMSUNG", >> "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "AOC", "LG", "LG", >> "AOC", "LG", "SAMSUNG", "LG", "SAMSUNG", "SAMSUNG", "LG", "LG", >> "SAMSUNG", "SAMSUNG", "SONY", "LG", "SAMSUNG", "SAMSUNG", "LG", >> "SAMSUNG", "LG", "SAMSUNG", "LG", "SAMSUNG", "LG", "SAMSUNG", >> "SAMSUNG", "SAMSUNG", "SAMSUNG", "LG", "PANASONIC", "PANASONIC", >> "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "SONY", >> "LG", "LG", "PANASONIC", "AOC", "SAMSUNG", "LG", "SAMSUNG", "LG", >> "SAMSUNG", "LG", "LG", "LG", "PANASONIC", "PANASONIC", "LG", >> "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", >> "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "LG", "SAMSUNG", >> "LG", "LG", "SAMSUNG", "LG"), producto = c("COMBO SMART - LG TV LED 4K >> ULTRA HD 43'' - 43UF6750 + GOO...", >> "SAMSUNG TV LED SMART HD 32'' UN32J4300 - NEGRO", "SAMSUNG TV LED 3D SMART >> FULL HD 48'' - 48J6400", >> "SAMSUNG TV LED 3D SMART FULL HD 55'' - 55J6400", "LG TV SMART LED HD 32\" >> 32LF585B - BLANCO", >> "LG TV SLIM ULTRA HD 3D WEBOS 2.0 49'' 49UF8500 - PLATEADO", >> "LG TV SMART WEBOS 2.0 FULL HD 43\" 43LF5900 -NEGRO", "LG TV LED HD 32\" - >> 32LF550B", >> "LG TV LED SMART FULL HD 43'' 43LF6350 - NEGRO", "LG TV LED SMART HD 32\" >> - 32LF585B", >> "LG GAME TV LED FULL HD 49\" - 49LF5410", "SAMSUNG TV LED FULL HD 60'' - >> UN60FH6003", >> "LG TV SMART WEBOS 2.0 FULL HD 49\" - 49LF6350", "LG TV LED FULL HD 43'' >> - >> 43LF5410", >> "SAMSUNG TV SMART FULL HD CURVO 40'' TIZEN - UN40J6500", "LG TV SMART >> WEBOS 2.0 ULTRA HD 4K 43\" - 43UF6400", >> "LG TV SLIM LED CINEMA 3D FULL HD 42'' 42LB6200 INCLUYE 02...", >> "LG GAMETV LED FULL HD 43\" - 43LF5400", "LG GAME TV LED FULL HD 49\" - >> 49LF5410", >> "TELEVISOR SAMSUNG UN40J5500 SMART TV LED FULL HD 40''-PLA...", >> "LG SMART 4K ULTRA HD 55\" - 55UB8200", "LG -TV LED SMART WEBOS 2.0 FULL >> HD 55\" - 55LF6350", >> "LG - GAME TV LED FULL HD 43'' - 43LF5410", "SONY - TV LED SMART HD 32'' >> - >> 32R505C", >> "SAMSUNG TV LED 3D SMART FULL HD 40'' - UN40H6400", "LG SMART TV 32\" HD >> WEBOS 2.0 32LF595B", >> "LG - TV LED WEBOS 3D SMART ULTRA HD CURVO 55'' 55UG8700 ...", >> "SAMSUNG TV LED FULL HD 40\" UN40JH5005 - NEGRO", "SONY TV LED FULL HD >> 40'' >> - KDL-40R354B", >> "SAMSUNG TV LED SMART FULL HD 40'' TIZEN UN40J5500 - PLATEADO", >> "LG TV LED FULL HD 42'' ULTRA SLIM 42LY340C - NEGRO", "LG TV SMART LED >> FULL >> HD 43\" - 43LF6350", >> "LG TV LED CURVO 55\" SMART ULTRA HD 4K CINEMA 3D - 55UC9700", >> "IMACO - TV LED HD 24?? - LED24HD", "TELEVISOR SAMSUNG UN32J4300 SMART TV >> LED HD 32''-NEGRO", >> "LG TV 3D SMART LED ULTRA HD 65\" - 65UF8500", "SAMSUNG - TV LED SMART 3D >> 65\" FULL HD SERIE 8 INTERACTIVO...", >> "SAMSUNG - TV LED HD 32\" 32JH4005 - NEGRO", "LG TV 55\" SMART ULTRA HD >> 4K >> CINEMA 3D 55UB8500", >> "HAIER TV LED HD LIVE GREEN 24'' - 24B8000", "LG TV LED FULL HD 47'' - >> 47LB5610", >> "SONY TV LED FULL HD 32'' - KDL-32R304B", "SAMSUNG TV LED SERIE 5 FULL HD >> 39? - 39FH5005", >> "LG - TV SAMT SLIM ULTRA HD 4K WEBOS 2.0 55'' 55UF7700 - P...", >> "LG TV LED CURVO 55\" SMART ULTRA HD 4K CINEMA 3D - 55UC9700", >> "LG TV MONITOR LED HD 23.6? - 24MT47A", "SAMSUNG - MONITOR LED 32\" MD32C >> - >> NEGRO", >> "TELEVISOR SAMSUNG UN40J6400 SMART TV LED 3D FULL HD 40''-...", >> "SAMSUNG LED SMART FULL HD 48'' - UN48J6500", "SONY - TV LED SMART FULL HD >> 40'' - 40R555C", >> "TELEVISOR HISENSE LED 40\" 40K221W SMART TV LED FULL HD", "LG TV MONITOR >> LED HD 23.6? - 24MT47A", >> "TELEVISOR SAMSUNG UN48J6400 SMART TV LED 3D FULL HD 48''-...", >> "LG 49UB8500 LED 49\" SMART 3D 4K", "SAMSUNG TV LED 3D SMART FULL HD 40'' >> TIZEN UN40J6400 - NEGRO", >> "LG TV LED FULL HD 42\" - 42LY340C", "SAMSUNG TV LED HD 32'' UN32J4000 - >> NEGRO", >> "TELEVISOR SAMSUNG UN48J5500 SMART TV LED FULL HD 48''-PLA...", >> "CONTINENTAL - TV LED 15.6\" CELED95935, INCLUYE RACK", "LG TV LED 4K >> ULTRA >> HD 43\" - 43UF6750", >> "IMACO - TV LED HD 16?? - LED16HD", "AOC - TELEVISOR HD 32\" LE32W454F- >> NEGRO", >> "AOC TV LED HD 20\" - LE20A1140", "SAMSUNG TV LED HD 32'' - UN32J4000", >> "LG - TV MONITOR 27.5? - 28MT47B", "SONY TV LED FULL HD 40'' - >> KDL-40R354B", >> "LG TV MONITOR LED HD 23.6? - 24MT47A", "LG GAME TV LED FULL HD 49\" - >> 49LF5410", >> "SONY TV LED FULL HD 40'' - KDL-40R354B", "SAMSUNG - UN48J6400 LED FULL HD >> 48\"SMART TIZEN 3D 2015 - ...", >> "SAMSUNG - MONITOR FULL HD 40\" MD40C - NEGRO", "PANASONIC LED SMART FULL >> HD 50\" - TC-50AS600", >> "LG - 43LF5410 LED 43\" FULL HD GAME - SILVER", "SAMSUNG - TELEVISOR LED >> HD 32\" UN32JH4005 - NEGRO", >> "NEX TV LED SMART HD 32\" USB WIFI INCORPORADO - LED3208SMR", >> "IMACO - TV LED HD 19?? - LED19HD", "LG -TV LED HG 32\" - 32LF550B", >> "LG - TELEVISOR LED 32\" HD 32LF550B", "CONTINENTAL - TV LED 19\" >> CELED99935, INCLUYE RACK", >> "SONY TV LED FULL HD 40'' - KDL-40R354B", "LG - TELEVISOR LED 32\" HD >> SMART >> TV 32LF585B - BLANCO", >> "MONITOR TV LG 24MT47A LED HD 23.6?-PLATEADO", "TELEVISOR SAMSUNG >> UN32J4300 >> SMART TV LED HD 32''-NEGRO", >> "LG GAME TV LED FULL HD 49\" - 49LF5400", "LG - TELEVISOR LED 32\" HD >> SMART >> TV 32LF585B ? BLANCO", >> "LG - TELEVISOR LED 32\" HD 32LF550B", "LG TV LED HD 32'' - 32LF550B", >> "LG TV LED SMART HD 32'' - 32LF585B", "SAMSUNG - TELEVISOR LED FULL HD >> 40\" >> UN40JH5005 ? NEGRO", >> "LG LED FULL HD SMART TV 42''42LF5850 - PLATEADO", "LG TV LED WEBOS 3D >> SMART ULTRA HD 49'' - 49UF8500", >> "SAMSUNG - TV LED SMART FULL HD 40? UN40H5500 - NEGRO", "SAMSUNG TV LED >> SMART HD 32'' UN32J4300 - NEGRO", >> "SAMSUNG TV LED ALTA DEFINICI?N DTV USB 32\" - 32JH4005", "SAMSUNG - >> TELEVISOR LED FULL HD 40\" UN40JH5005 - NEGRO", >> "SAMSUNG TV LED SMART TIZEN 3D QUADCORE40\" - UN40J6400", "AOC TV LED HD >> 32\" - LE32W454F +RACK FIJO", >> "LG TV LED FULL HD 43'' - 43LF5410", "LG - TV LED WEBOS 3D SMART FULL HD >> 55'' - 55LF6500", >> "AOC 32\" LE32W454F HD DIGITAL LED TV + HOME THEATRE F1200U", >> "LG TV LED WEBOS 3D SMART ULTRA HD 49'' - 49UF8500", "SAMSUNG TV LED ALTA >> DEFINICI?N DTV USB 32\" - 32JH4005", >> "LG - 42LF6400 LED FULL HD 42'' SMART WEBOS 3D - SILVER", "TELEVISOR >> SAMSUNG UN48J5300 SMART TV LED FULL HD 48''-NEGRO", >> "SAMSUNG UN40JH5005 LED FULL HD 40\" - NEGRO GLOSS", "LG - 24MT47A + >> MONITOR TV 24\" PUERTOS HDMI, USB, AV - NEG...", >> "LG TV LED SMART 4K ULTRA HD 55\" - 55UB8200", "SAMSUNG - 55J6400 LED 55\" >> SMART TIZEN 3D - BLACK", >> "SAMSUNG TV CURVED SMART ULTRA HD 48'' TIZEN UN48JU6700 - ...", >> "TELEVISI?N SONY KDL-32R505C LED 32\"-NEGRO", "LG TV LED CINEMA 3D 4K >> SMART >> ULTRA HD 49'' + 02 LENTES 3D...", >> "SAMSUNG - 55J6400 LED 55\" SMART TIZEN 3D - BLACK", "SAMSUNG - 40J5500 >> LED >> 40\" SMART QUADCORE / BLUETOOTH* - S...", >> "LG TV LED WEBOS 3D SMART ULTRA HD 49'' - 49UF8500", "SAMSUNG TV LED SMART >> FULL HD 40'' TIZEN UN40J5500 - PLATEADO", >> "LG - TELEVISOR LED 42\" FULL HD SMART TV 42LF5850 ? PLAT...", >> "TELEVISI?N SAMSUNG UN48J5500 LED SMART TV 48\"-PLATEADO", "LG - TELEVISOR >> LED 42\" FULL HD SMART TV 42LF5850 - PLATEADO", >> "TELEVISOR SAMSUNG UN55JU6700 LED UHD 4K SMART 55'' - PLA...", >> "LG - TV LED WEBOS 3D SMART SUPER ULTRA HD 55'' - 55UF9500", >> "TELEVISOR SAMSUNG UN50JU6500 UHD 4K SMART 50'' - PLATEADO", >> "SAMSUNG - TELEVISOR LED HD 40\" SMART UN40J5500 - NEGRO", "TELEVISOR >> SAMSUNG UN48J6500 CURVO FULL HD SMART 48'' - P...", >> "SAMSUNG - TELEVISOR LED HD 32\" SMART UN32J4300 - NEGRO", "LG TV LED >> CINEMA 3D 4K SMART ULTRA HD 55'' 55UB8500 - NEGRO", >> "TELEVISI?N PANASONIC TC-L40SV7L LED FULL-HD 40''-NEGRO", "PANASONIC TV >> LED >> 42?? FULL HD TC-L42E6L - NEGRO.", >> "TELEVISOR SAMSUNG UN 40JH5005 LED FULL HD", "SAMSUNG - TV LED SMART CURVO >> 3D ULTRA HD 65? UN65HU9000...", >> "SAMSUNG - UN48J5300 LED FULL HD SMART 2015 - BLACK", "SAMSUNG TV LED >> SMART >> FULL HD 50'' TIZEN UN50J5500 - PLATEADO", >> "SAMSUNG - TV SMART 3D FULL HD 60? UN60H7100 - NEGRO", "SONY - TELEVISOR >> LED SMART TV FULL HD 40'' KDL-40R555C - ...", >> "LG TV 47\" LED FULL HD - 47LY340C", "LG TV UHD 4K 65UB9800 SMART 3D LED >> TV >> C/WEBOS 65' LENTES 3D", >> "PANASONIC - TELEVISOR TC-L42AS610 LED SMART FULL HD 42?...", >> "AOC - TELEVISOR LED 32\" - LE32W454F", "SAMSUNG TV LED 32? - >> UN32FH4005G", >> "LG TV SMART LED FULL HD 42\" - 42LF5850", "SAMSUNG TV LED 3D SMART FULL >> HD >> 40'' TIZEN UN40J6400 - NEGRO", >> "LG TV SMART LED FULL HD 42\" - 42LF5850", "SAMSUNG TV LED HD 32'' >> UN32JH4005 - NEGRO", >> "LG TV PLASMA 2014 60\" FULL HD 1080P - 60PB5600", "LG TV LED CINEMA 3D >> SMART FULL HD 55'' 55LB7050 - PLATEADO", >> "LG TV LED SMART FULL HD 43'' 43LF6350 - NEGRO", "PANASONIC PUERTO USB LED >> 40\" - TC-L40SV7L", >> "PANASONIC LED SMART FULL HD 42\" - TC-L42AS610", "LG TV SMART LED FULL >> HD >> 49\" - 49LF6350", >> "SAMSUNG TV LED SMART ULTRA HD 50'' TIZEN UN50JU6500-NEGRO", >> "SAMSUNG TV LED SMART ULTRA HD 50'' TIZEN UN50JU6500 - NEGRO", >> "SAMSUNG TV SMART FULL HD CURVO 48'' TIZEN UN48J6500", "SAMSUNG TV SMART >> ULTRA HD 4K 65'' - UN65JU6500", >> "SAMSUNG UN48J5500 LED 48\" - PLATEADO", "SAMSUNG LED 32\" CONEXI?N WIFI - >> UN32J4300", >> "SAMSUNG LED SMART 40'' CONEXI?N WI-FI DIRECT - UN40J5500", "SAMSUNG LED >> SMART ULTRA HD 55\" - TVUN55JU6700", >> "SAMSUNG TV CURVED 3D SMART ULTRA HD 65'' TIZEN UN65JU7500...", >> "SAMSUNG TELEVISOR HG32NB460GF, 32\" LED, HD, 1366 X 768", "LG -TV SMART >> LED FULL HD 55\" - 55LF6350", >> "SAMSUNG TV LED SMART 3D 48\" - UN48H6400", "LG LED ULTRAHD 4K 49\" SMART >> 3D - 49UB8300", >> "LG - TV LED SMART HD 32'' 32LF585B - PLATEADO", "SAMSUNG - TV LED FULL HD >> 40\" UN40JH5005 - NEGRO GLOSS", >> "LG - TV LED FULL HD 43'' 43LF5410 - PLATEADO"), precio.antes = c(2599L, >> 1299L, 2899L, 3999L, 1199L, 4499L, 1999L, 1099L, 2299L, 1299L, >> 2499L, 3999L, 2199L, 1899L, 2299L, 2299L, 1799L, 1499L, 2299L, >> 1999L, 3999L, 3499L, 1549L, 1299L, 2299L, 2299L, 6999L, 1499L, >> 1499L, 1899L, 1499L, 2099L, 6999L, 599L, 1299L, 9999L, 8999L, >> 999L, 5999L, 599L, 2299L, 1299L, 1499L, 4999L, 6999L, 899L, 2299L, >> 2499L, 3299L, 1799L, 1399L, 899L, 2499L, 4199L, 2299L, 1499L, >> 1099L, 2499L, 399L, 2499L, 399L, 999L, 599L, 999L, 899L, 1499L, >> 699L, 2299L, 1399L, 2499L, 2999L, 2499L, 1599L, 1149L, 999L, >> 499L, 1089L, 1099L, 499L, 1499L, 1399L, 799L, 1299L, 2499L, 1399L, >> 1259L, 1299L, 1299L, 1599L, 1999L, 3999L, 1999L, 1199L, 999L, >> 1599L, 2299L, 999L, 1499L, 3699L, 1199L, 3899L, 1099L, 2299L, >> 2499L, 1399L, 729L, 4199L, 3599L, 4999L, 1399L, 3999L, 4999L, >> 2199L, 4499L, 2299L, 1699L, 2779L, 1699L, 5799L, 8999L, 3699L, >> 2099L, 3299L, 1299L, 5900L, 1799L, 1799L, 1399L, 14999L, 2499L, >> 2799L, 6299L, 1799L, 2417L, 9500L, 1799L, 799L, 999L, 1999L, >> 2499L, 1899L, 999L, 2299L, 3699L, 2199L, 1699L, 1999L, 2499L, >> 3499L, 3899L, 2999L, 7999L, 2299L, 1299L, 2099L, 5799L, 9999L, >> 1110L, 3399L, 2799L, 3899L, 1299L, 1399L, 1499L), precio.nuevo = c(1799L, >> 999L, 2299L, 3299L, 999L, 3199L, 1499L, 849L, 1399L, 979L, 1795L, >> 2999L, 1899L, 1299L, 1699L, 1599L, 1499L, 1299L, 1699L, 1449L, >> 3699L, 2499L, 1199L, 999L, 1499L, 899L, 4999L, 1199L, 1199L, >> 1389L, 1299L, 1699L, 4899L, 549L, 999L, 7499L, 6700L, 849L, 4299L, >> 549L, 1499L, 899L, 1299L, 3599L, 5354L, 538L, 1959L, 1599L, 2999L, >> 1367L, 1099L, 589L, 2449L, 3199L, 1529L, 1229L, 839L, 1779L, >> 329L, 1799L, 389L, 719L, 489L, 849L, 799L, 1185L, 599L, 1609L, >> 1299L, 2179L, 2839L, 1999L, 1599L, 899L, 799L, 449L, 880L, 899L, >> 429L, 1275L, 1199L, 589L, 999L, 1749L, 1199L, 1099L, 899L, 989L, >> 1399L, 1999L, 2999L, 1599L, 999L, 819L, 1299L, 2299L, 789L, 1299L, >> 3199L, 977L, 3089L, 849L, 1719L, 1799L, 1399L, 569L, 3979L, 3299L, >> 3369L, 1093L, 3389L, 3289L, 1419L, 3429L, 1405L, 1499L, 1899L, >> 1499L, 5199L, 6999L, 3199L, 1599L, 2999L, 1099L, 5089L, 1459L, >> 1499L, 1289L, 12999L, 1739L, 2255L, 5879L, 1499L, 1929L, 8499L, >> 1649L, 799L, 899L, 1659L, 1749L, 1609L, 831L, 2089L, 3659L, 1769L, >> 1499L, 1599L, 2176L, 2749L, 2889L, 2899L, 5599L, 1899L, 1099L, >> 1899L, 5199L, 8589L, 990L, 3169L, 2199L, 3899L, 949L, 1099L, >> 1199L), dif.precios = c(800L, 300L, 600L, 700L, 200L, 1300L, >> 500L, 250L, 900L, 320L, 704L, 1000L, 300L, 600L, 600L, 700L, >> 300L, 200L, 600L, 550L, 300L, 1000L, 350L, 300L, 800L, 1400L, >> 2000L, 300L, 300L, 510L, 200L, 400L, 2100L, 50L, 300L, 2500L, >> 2299L, 150L, 1700L, 50L, 800L, 400L, 200L, 1400L, 1645L, 361L, >> 340L, 900L, 300L, 432L, 300L, 310L, 50L, 1000L, 770L, 270L, 260L, >> 720L, 70L, 700L, 10L, 280L, 110L, 150L, 100L, 314L, 100L, 690L, >> 100L, 320L, 160L, 500L, 0L, 250L, 200L, 50L, 209L, 200L, 70L, >> 224L, 200L, 210L, 300L, 750L, 200L, 160L, 400L, 310L, 200L, 0L, >> 1000L, 400L, 200L, 180L, 300L, 0L, 210L, 200L, 500L, 222L, 810L, >> 250L, 580L, 700L, 0L, 160L, 220L, 300L, 1630L, 306L, 610L, 1710L, >> 780L, 1070L, 894L, 200L, 880L, 200L, 600L, 2000L, 500L, 500L, >> 300L, 200L, 811L, 340L, 300L, 110L, 2000L, 760L, 544L, 420L, >> 300L, 488L, 1001L, 150L, 0L, 100L, 340L, 750L, 290L, 168L, 210L, >> 40L, 430L, 200L, 400L, 323L, 750L, 1010L, 100L, 2400L, 400L, >> 200L, 200L, 600L, 1410L, 120L, 230L, 600L, 0L, 350L, 300L, 300L >> ), dif.porcentual = c(30.78, 23.09, 20.7, 17.5, 16.68, 28.9, >> 25.01, 22.75, 39.15, 24.63, 28.17, 25.01, 13.64, 31.6, 26.1, >> 30.45, 16.68, 13.34, 26.1, 27.51, 7.5, 28.58, 22.6, 23.09, 34.8, >> 60.9, 28.58, 20.01, 20.01, 26.86, 13.34, 19.06, 30, 8.35, 23.09, >> 25, 25.55, 15.02, 28.34, 8.35, 34.8, 30.79, 13.34, 28.01, 23.5, >> 40.16, 14.79, 36.01, 9.09, 24.01, 21.44, 34.48, 2, 23.82, 33.49, >> 18.01, 23.66, 28.81, 17.54, 28.01, 2.51, 28.03, 18.36, 15.02, >> 11.12, 20.95, 14.31, 30.01, 7.15, 12.81, 5.34, 20.01, 0, 21.76, >> 20.02, 10.02, 19.19, 18.2, 14.03, 14.94, 14.3, 26.28, 23.09, >> 30.01, 14.3, 12.71, 30.79, 23.86, 12.51, 0, 25.01, 20.01, 16.68, >> 18.02, 18.76, 0, 21.02, 13.34, 13.52, 18.52, 20.77, 22.75, 25.23, >> 28.01, 0, 21.95, 5.24, 8.34, 32.61, 21.87, 15.25, 34.21, 35.47, >> 23.78, 38.89, 11.77, 31.67, 11.77, 10.35, 22.22, 13.52, 23.82, >> 9.09, 15.4, 13.75, 18.9, 16.68, 7.86, 13.33, 30.41, 19.44, 6.67, >> 16.68, 20.19, 10.54, 8.34, 0, 10.01, 17.01, 30.01, 15.27, 16.82, >> 9.13, 1.08, 19.55, 11.77, 20.01, 12.93, 21.43, 25.9, 3.33, 30, >> 17.4, 15.4, 9.53, 10.35, 14.1, 10.81, 6.77, 21.44, 0, 26.94, >> 21.44, 20.01), pulgadas = c("43", "32", "48", "55", "32", "49", >> "43", "32", "43", "32", "49", "60", "49", "43", "40", "43", "42", >> "43", "49", "40", "55", "55", "43", "32", "40", "32", "55", "40", >> "40", "40", "42", "43", "55", "24", "32", "65", "65", "32", "55", >> "24", "47", "32", "39", "55", "55", "6", "32", "40", "48", "40", >> "40", "6", "48", "49", "40", "42", "32", "48", "6", "43", "16", >> "32", "20", "32", "5", "40", "6", "49", "40", "48", "40", "50", >> "43", "32", "32", "19", "32", "32", "19", "40", "32", "6", "32", >> "49", "32", "32", "32", "32", "40", "42", "49", "40", "32", "32", >> "40", "40", "32", "43", "55", "32", "49", "32", "42", "48", "40", >> "24", "55", "55", "48", "32", "49", "55", "40", "49", "40", "42", >> "48", "42", "55", "55", "50", "40", "48", "32", "55", "40", "42", >> "NA", "65", "NA", "50", "60", "40", "47", "65", "42", "32", "32", >> "42", "40", "42", "32", "60", "55", "43", "40", "42", "49", "50", >> "50", "48", "65", "48", "32", "40", "55", "65", "32", "55", "48", >> "49", "32", "40", "43"), rangos = c("S/.1500 - S/.2500", "S/.500 - >> S/.1500", >> "S/.1500 - S/.2500", "S/.2500 - S/.3500", "S/.500 - S/.1500", >> "S/.2500 - S/.3500", "S/.500 - S/.1500", "S/.500 - S/.1500", >> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >> "S/.2500 - S/.3500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >> "S/.1500 - S/.2500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >> "S/.500 - S/.1500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >> "S/.3500 - S/.4500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", "> S/.4,500", >> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - >> S/.1500", >> "S/.1500 - S/.2500", "> S/.4,500", "S/.500 - S/.1500", "S/.500 - S/.1500", >> "> S/.4,500", "> S/.4,500", "S/.500 - S/.1500", "S/.3500 - S/.4500", >> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - >> S/.1500", >> "S/.3500 - S/.4500", "> S/.4,500", "S/.500 - S/.1500", "S/.1500 - >> S/.2500", >> "S/.1500 - S/.2500", "S/.2500 - S/.3500", "S/.500 - S/.1500", >> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >> "S/.2500 - S/.3500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >> "S/.500 - S/.1500", "S/.1500 - S/.2500", "< S/.500", "S/.1500 - S/.2500", >> "< S/.500", "S/.500 - S/.1500", "< S/.500", "S/.500 - S/.1500", >> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - >> S/.2500", >> "S/.500 - S/.1500", "S/.1500 - S/.2500", "S/.2500 - S/.3500", >> "S/.1500 - S/.2500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >> "S/.500 - S/.1500", "< S/.500", "S/.500 - S/.1500", "S/.500 - S/.1500", >> "< S/.500", "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", >> "S/.500 - S/.1500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - >> S/.1500", >> "S/.1500 - S/.2500", "S/.2500 - S/.3500", "S/.1500 - S/.2500", >> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - >> S/.2500", >> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.2500 - S/.3500", >> "S/.500 - S/.1500", "S/.2500 - S/.3500", "S/.500 - S/.1500", >> "S/.1500 - S/.2500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >> "S/.500 - S/.1500", "S/.3500 - S/.4500", "S/.2500 - S/.3500", >> "S/.2500 - S/.3500", "S/.500 - S/.1500", "S/.2500 - S/.3500", >> "S/.2500 - S/.3500", "S/.500 - S/.1500", "S/.2500 - S/.3500", >> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >> "S/.500 - S/.1500", "> S/.4,500", "> S/.4,500", "S/.2500 - S/.3500", >> "S/.1500 - S/.2500", "S/.2500 - S/.3500", "S/.500 - S/.1500", >> "> S/.4,500", "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", >> "> S/.4,500", "S/.1500 - S/.2500", "S/.1500 - S/.2500", "> S/.4,500", >> "S/.500 - S/.1500", "S/.1500 - S/.2500", "> S/.4,500", "S/.1500 - >> S/.2500", >> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >> "S/.1500 - S/.2500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >> "S/.1500 - S/.2500", "S/.3500 - S/.4500", "S/.1500 - S/.2500", >> "S/.500 - S/.1500", "S/.1500 - S/.2500", "S/.1500 - S/.2500", >> "S/.2500 - S/.3500", "S/.2500 - S/.3500", "S/.2500 - S/.3500", >> "> S/.4,500", "S/.1500 - S/.2500", "S/.500 - S/.1500", "S/.1500 - >> S/.2500", >> "> S/.4,500", "> S/.4,500", "S/.500 - S/.1500", "S/.2500 - S/.3500", >> "S/.1500 - S/.2500", "S/.3500 - S/.4500", "S/.500 - S/.1500", >> "S/.500 - S/.1500", "S/.500 - S/.1500")), .Names = c("id", "marca", >> "producto", "precio.antes", "precio.nuevo", "dif.precios", >> "dif.porcentual", >> "pulgadas", "rangos"), class = "data.frame", row.names = c(NA, >> -164L)) >> >> >> >> >> >> >> >> >> 2015-10-10 11:55 GMT-05:00 Omar Andr? Gonz?les D?az < >> oma.gonzales at gmail.com> >> : >> >> > Thank you very much to both of you. This information is very >> enlightening >> > to me. >> > >> > Cheers. >> > >> > >> > 2015-10-10 1:11 GMT-05:00 Boris Steipe <boris.steipe at utoronto.ca>: >> > >> >> David answered most of this. Just a two short notes inline. >> >> >> >> >> >> >> >> >> >> On Oct 10, 2015, at 12:38 AM, Omar Andr? Gonz?les D?az < >> >> oma.gonzales at gmail.com> wrote: >> >> >> >> > David, Boris, so thankfull for your help. Both approaches are very >> >> good. I got this solve with David's help. >> >> > >> >> > I find very insteresting Bori's for loop. And I need a little help >> >> understanding the regex part on it. >> >> > >> >> > - The strsplit function: strsplit(ripley.tv$producto[i], >> "[^A-Z0-9-]+") >> >> > >> >> > I understand for this: split every row by a sequence of any number or >> >> letter or "-" that appears at leat once (+ operator). >> >> > >> >> > 1.- What does mena the "^" symbol? If you remove it, just appeare >> >> blanks. >> >> > 2.- Why is there the necessity of "+" after the closing "]"? >> >> > >> >> > 3.- How this: ripley.tv$id[i] <- v[grep("[A-Z][0-9]", v)] >> >> > Identifies also the IDs where "-" is present. Here the regex >> does >> >> not have the "-" included. >> >> >> >> Yes. I am not matching the entire token here. Note there is no "+": The >> >> two character-class expressions match exactly one uppercase character >> >> adjacent to exactly one number. If this is found in a token, grep >> returns >> >> TRUE. It doesn't matter what else the token contains - the first regex >> >> already took care of removing everything that's not needed. The vector >> of >> >> FALSEs and a single TRUE that grep() returns goes inside the square >> >> brackets, and selects the token from v. >> >> >> >> >> >> >> >> > Also, I notice that David used the "-" at the begining of the >> matching: >> >> [-A-Z0-9], without the "^" (stars with) at the beginning. >> >> >> >> This can be very confusing about regular expressions: the same >> character >> >> can mean different things depending on where it is found. Between two >> >> characters in a character class expresssion, the hyphen means "range". >> >> Elsewhere it is a literal hyphen. David put his at the beginning, I >> had it >> >> at the end (in the first regex). Another tricky character is "?" which >> can >> >> mean 0,1 matches, or turn "greedy" matching off... >> >> >> >> Online regex testers are invaluable to develop a regex - one I >> frequently >> >> use is regexpal.com >> >> >> >> Cheers, >> >> B. >> >> >> >> >> >> > >> >> > I would appreciate a response from you, gentlemen. >> >> > >> >> > Thanks again. >> >> > >> >> > >> >> > >> >> > >> >> > >> >> > >> >> > >> >> > >> >> > >> >> > >> >> > >> >> > 2015-10-09 18:32 GMT-05:00 David Winsemius <dwinsemius at comcast.net>: >> >> > >> >> > On Oct 9, 2015, at 4:21 PM, Boris Steipe wrote: >> >> > >> >> > > I think you are going into the wrong direction here and this is a >> >> classical example of what we mean by "technical debt" of code. Rather >> than >> >> tell to your regular expression what you are looking for, you are >> handling >> >> special cases with redundant code. This is ugly, brittle and >> impossible to >> >> maintain. >> >> > > >> >> > > Respect to you that you have recognized this. >> >> > > >> >> > > >> >> > > The solution is rather simple: >> >> > > >> >> > > A) Isolate tokens. Your IDs contain only a limited set of >> characters. >> >> Split your strings along the characters that are not found in IDs to >> >> isolate candidate tokens, place them into a vector. >> >> > > >> >> > > B) Evaluate your tokens: as far as I can see IDs all contain >> letters >> >> AND numbers. This is a unique characteristic. Thus it is sufficient to >> grep >> >> for a letter/number pair in a token to identify it as an ID. >> >> > > >> >> > > Should you ever find a need to accommodate differently formed IDs, >> >> there are only two, well defined places with clearly delegated roles >> where >> >> changes might be needed. >> >> > > >> >> > > Here is the code: >> >> > > >> >> > > for (i in 1:nrow(ripley.tv)) { >> >> > > v <- unlist(strsplit(ripley.tv$producto[i], "[^A-Z0-9-]+")) >> # >> >> isolate tokens >> >> > > ripley.tv$id[i] <- v[grep("[A-Z][0-9]", v)] # identify IDs >> >> and store >> >> > > } >> >> > >> >> > That logic actually simplifies the regex strategy as well: >> >> > >> >> > sub("(.*[ \n])([-A-Z0-9]{6,12})(.*)", "\\2", >> >> > ripley.tv$producto, >> >> > ignore.case = T) >> >> > >> >> > >> >> > Almost succeeds, with a few all-character words, but if you require >> one >> >> number in the middle you get full results: >> >> > >> >> > sub("(.*[ \n])([-A-Z0-9]{3,6}[0-9][-A-Z0-9]{2,6})(.*)", "\\2", >> >> > ripley.tv$producto, >> >> > ignore.case = T) >> >> > >> >> > [1] "48J6400" "40J5300" "TC-40CS600L" "LE28F6600" >> >> "LE40K5000N" >> >> > [6] "LE32B7000" "LE32K5000N" "LE55B8000" "LE40B8000" >> "LE24B8000" >> >> > [11] "TC-42AS610" "LE50K5000N" "40JU6500" "48JU6500" >> "50JU6500" >> >> > [16] "55JS9000" "55JU6500" "55JU6700" "55JU7500" >> "65JS9000" >> >> > [21] "65JU6500" "65JU7500" "75JU6500" "40LF6350" >> "42LF6400" >> >> > [26] "42LF6450" "49LF6450" "LF6400" "43UF6750" >> "49UF6750" >> >> > [31] "UF6900" "49UF7700" "49UF8500" "55UF7700" >> "65UF7700" >> >> > [36] "55UF8500" "TC-55CX640W" "TC-50CX640W" "70UF7700" "UG8700" >> >> > [41] "LF6350" "KDL-50FA95C" "KDL50W805C" "KDL-40R354B" >> "40J5500" >> >> > [46] "50J5500" "32JH4005" "50J5300" "48J5300" >> "40J6400" >> >> > [51] "KDL-32R505C" "KDL-40R555C" "55J6400" "40JH5005" >> "43LF5410" >> >> > [56] "32LF585B" "49LF5900" "KDL-65W855C" "UN48J6500" >> "LE40F1551" >> >> > [61] "TC-32AS600L" "KDL-32R304B" "55EC9300" "LE32W454F" >> "58UF8300" >> >> > [66] "KDL-55W805C" "XBR-49X835C" "XBR-55X855C" "XBR-65X905C" >> >> "XBR-75X945C" >> >> > [71] "XBR-55X905C" "LC60UE30U" "LC70UE30U" "LC80UE30U" >> "48J5500" >> >> > [76] "79UG8800" "65UF9500" "65UF8500" "55UF9500" >> "32J4300" >> >> > [81] "KDL-48R555C" "55UG8700" "60UF8500" "55LF6500" >> "32LF550B" >> >> > [86] "47LB5610" "TC-50AS600L" "XBR-55X855B" "LC70SQ17U" >> >> "XBR-79X905B" >> >> > [91] "TC-40A400L" "XBR-70X855B" "55HU8700" "LE40D3142" >> >> "TC-42AS650L" >> >> > [96] "LC70LE660" "LE58D3140" >> >> > >> >> > > >> >> > > >> >> > > >> >> > > Cheers, >> >> > > Boris >> >> > > >> >> > > >> >> > > >> >> > > On Oct 9, 2015, at 5:48 PM, Omar Andr? Gonz?les D?az < >> >> oma.gonzales at gmail.com> wrote: >> >> > > >> >> > >>>>> ripley.tv <- structure(list(id = c(NA, NA, NA, NA, NA, NA, NA, >> >> NA, >> >> > >>> NA, NA, >> >> > >>>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >> >> > >>>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >> >> > >>>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >> >> > >>>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >> >> > >>>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >> >> > >>>>> NA, NA, NA, NA, NA, NA, NA), marca = c("SAMSUNG", "SAMSUNG", >> >> > >>>>> "PANASONIC", "HAIER", "HAIER", "HAIER", "HAIER", "HAIER", >> "HAIER", >> >> > >>>>> "HAIER", "PANASONIC", "HAIER", "SAMSUNG", "SAMSUNG", "SAMSUNG", >> >> > >>>>> "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", >> "SAMSUNG", >> >> > >>>>> "SAMSUNG", "SAMSUNG", "LG", "LG", "LG", "LG", "LG", "LG", "LG", >> >> > >>>>> "LG", "LG", "LG", "LG", "LG", "LG", "PANASONIC", "PANASONIC", >> >> > >>>>> "LG", "LG", "LG", "SONY", "SONY", "SONY", "SAMSUNG", "SAMSUNG", >> >> > >>>>> "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "SONY", "SONY", >> >> "SAMSUNG", >> >> > >>>>> "SAMSUNG", "LG", "LG", "LG", "SONY", "SAMSUNG", "AOC", >> >> "PANASONIC", >> >> > >>>>> "SONY", "LG", "AOC", "LG", "SONY", "SONY", "SONY", "SONY", >> "SONY", >> >> > >>>>> "SONY", "SHARP", "SHARP", "SHARP", "SAMSUNG", "LG", "LG", "LG", >> >> > >>>>> "LG", "SAMSUNG", "SONY", "LG", "LG", "LG", "LG", "LG", >> >> "PANASONIC", >> >> > >>>>> "SONY", "SHARP", "SONY", "PANASONIC", "SONY", "SAMSUNG", "AOC", >> >> > >>>>> "PANASONIC", "SHARP", "AOC"), producto = c("SMART TV LED FHD >> 48\" >> >> 3D >> >> > >>>>> 48J6400", >> >> > >>>>> "SMART TV LED FHD 40\" 40J5300", "TV LED FULL HD 40'' >> >> TC-40CS600L", >> >> > >>>>> "TELEVISOR LED LE28F6600 28\"", "SMART TV 40\" HD LE40K5000N", >> >> > >>>>> "TV LED HD 32'' LE32B7000", "SMART TV 32'' LE32K5000N", "TV >> LED >> >> FHD >> >> > >>> 55\" - >> >> > >>>>> LE55B8000", >> >> > >>>>> "TV LED LE40B8000 FULL HD 40\"", "TV LE24B8000 LED HD 24\" - >> >> NEGRO", >> >> > >>>>> "TV LED FULL HD 42'' TC-42AS610", "TELEVISOR LED LE50K5000N >> 50\"", >> >> > >>>>> "SMART TV LED UHD 40\" 40JU6500", "SMART TV ULTRA HD 48'' >> >> 48JU6500", >> >> > >>>>> "SMART TV 50JU6500 LED UHD 50\" - NEGRO", "SMART TV ULTRA HD >> 55'' >> >> 3D >> >> > >>>>> 55JS9000", >> >> > >>>>> "SMART TV LED UHD 55\" 55JU6500", "SMART TV ULTRA HD 55'' >> >> 55JU6700", >> >> > >>>>> "SMART TV CURVO 55JU7500 LED UHD 55\" 3D - NEGRO", "SMART TV >> >> ULTRA HD >> >> > >>> 65'' >> >> > >>>>> 3D 65JS9000", >> >> > >>>>> "SMART TV 65JU6500 LED UHD 65\"", "SMART TV ULTRA HD 65'' >> >> 65JU7500", >> >> > >>>>> "SMART TV LED UHD 75\" 75JU6500", "SMART TV WEB OS 40\" FULL HD >> >> > >>> 40LF6350", >> >> > >>>>> "SMART TV 3D 42\" FULL HD 42LF6400", "TV LED 42\" FULL HD >> CINEMA >> >> 3D >> >> > >>>>> 42LF6450", >> >> > >>>>> "TV LED 49\" FULL HD CINEMA 3D 49LF6450", "SMART TV LF6400 49\" >> >> FULL HD >> >> > >>>>> 3D", >> >> > >>>>> "TV 43UF6750 43\" ULTRA HD 4K", "TV 49\" ULTRA HD 4K 49UF6750", >> >> > >>>>> "TV LED 49\" ULTRA HD SMART UF6900", "SMART TV 49UF7700 49\" >> >> ULTRA HD >> >> > >>> 4K", >> >> > >>>>> "SMART TV 49UF8500 49\" ULTRA HD 4K 3D", "TV LED 55\" CINEMA 3D >> >> SMART >> >> > >>> TV >> >> > >>>>> 55UF7700", >> >> > >>>>> "SMART TV 65UF7700 65\" ULTRA HD 4K", "SMART TV 55UF8500 55\" >> >> ULTRA HD >> >> > >>> 4K >> >> > >>>>> 3D", >> >> > >>>>> "TV LED 55\" ULTRA HD 4K SMART TC-55CX640W", "TV LED 50\" ULTRA >> >> HD 4K >> >> > >>> SMART >> >> > >>>>> TC-50CX640W", >> >> > >>>>> "SMART TV 70UF7700 3D ULTRA HD 70\"", "TV LED CURVO 65\" ULTRA >> HD >> >> 4K >> >> > >>> CINEMA >> >> > >>>>> SMART UG8700", >> >> > >>>>> "TV LED 60\" FULL HD SMART LF6350", "SMART TV KDL-50FA95C 50\" >> >> FULL HD >> >> > >>> 3D", >> >> > >>>>> "SMART TV KDL50W805C 50\" FULL HD 3D", "TV LED 40\" FULL HD >> >> > >>> KDL-40R354B", >> >> > >>>>> "SMART TV LED FULL HD 40'' 40J5500", "SMART TV LED FULL HD 50'' >> >> > >>> 50J5500", >> >> > >>>>> "TV LED HD 32'' 32JH4005", "SMART TV LED FULL HD 50\" 50J5300", >> >> > >>>>> "SMART TV LED 48\" FULL HD 48J5300", "SMART TV FULL HD 40'' 3D >> >> > >>> 40J6400", >> >> > >>>>> "TV LED 32\" HD SMART KDL-32R505C", "TV LED 40\" SMART FULL HD >> >> > >>> KDL-40R555C >> >> > >>>>> - NEGRO", >> >> > >>>>> "SMART TV LED FHD 55\" 3D 55J6400", "TV 40JH5005 LED FHD 40\" - >> >> NEGRO", >> >> > >>>>> "TV 43\" FULL HD 43LF5410", "SMART TV 32LF585B LED HD 32\" - >> >> BLANCO", >> >> > >>>>> "TV LED 49\" FULL HD SMART 49LF5900", "SMART TV 65\" FULL HD 3D >> >> > >>>>> KDL-65W855C", >> >> > >>>>> "SMART TV LED FHD 48\" UN48J6500", "TV LED 40\" FULL HD >> >> LE40F1551", >> >> > >>>>> "TV LED 32'' SMART HD TC-32AS600L", "TV LED 32'' HD >> KDL-32R304B", >> >> > >>>>> "TV OLED 55\" SMART 3D FULL HD 55EC9300 PLATEADO", "TV LED HD >> 32'' >> >> > >>>>> LE32W454F", >> >> > >>>>> "TV LED 58\" ULTRA HD SMART 58UF8300", "TV LED 55\" FULL HD >> SMART >> >> 3D >> >> > >>>>> KDL-55W805C", >> >> > >>>>> "TV LED 49\" ULTRA HD 4K XBR-49X835C", "TV LED 55\" ULTRA HD 4K >> >> > >>>>> XBR-55X855C", >> >> > >>>>> "TV LED ULTRA DELGADO 55\" ULTRA HD 4K XBR-65X905C", "TV LED >> 75\" >> >> > >>> ULTRA HD >> >> > >>>>> 4K 3D XBR-75X945C", >> >> > >>>>> "TV LED ULTRA DELGADO 55\" ULTRA HD 4K XBR-55X905C", "SMART TV >> >> LED 60'' >> >> > >>>>> ULTRA HD 4K LC60UE30U", >> >> > >>>>> "SMART TV LED 70'' ULTRA HD 4K LC70UE30U", "SMART TV LED 80'' >> >> ULTRA HD >> >> > >>> 4K >> >> > >>>>> LC80UE30U", >> >> > >>>>> "SMART TV LED FULL HD 48'' 48J5500", "SMART TV CURVO 79UG8800 >> 79\" >> >> > >>> ULTRA HD >> >> > >>>>> 4K 3D", >> >> > >>>>> "SMART TV 65UF9500 65\" ULTRA HD 4K 3D", "SMART TV 65UF8500 >> 65\" >> >> ULTRA >> >> > >>> HD >> >> > >>>>> 4K 3D", >> >> > >>>>> "SMART TV 55UF9500 55\" ULTRA HD 4K 3D", "SMART TV LED HD 32\" >> >> > >>> 32J4300", >> >> > >>>>> "TV LED 48\" SMART FULL HD KDL-48R555C - NEGRO", "SMART TV >> >> 55UG8700 >> >> > >>> 55\" >> >> > >>>>> ULTRA HD 4K 3D", >> >> > >>>>> "SMART TV 60UF8500 60\" ULTRA HD 4K 3D", "SMART TV 55LF6500 >> 55\" >> >> FULL >> >> > >>> HD >> >> > >>>>> 3D", >> >> > >>>>> "TV 32LF550B 32\" HD", "TV LED 47\" FULL HD 47LB5610", "TV LED >> >> FULL HD >> >> > >>> 50'' >> >> > >>>>> TC-50AS600L", >> >> > >>>>> "TV SMART LED 55\" UHD 3D XBR-55X855B", "TV LED FULL HD 4K >> >> LC70SQ17U >> >> > >>> 70''", >> >> > >>>>> "TV LED SMART UHD 79\" XBR-79X905B", "TV LED FULL HD 40'' >> >> TC-40A400L", >> >> > >>>>> "TV LED SMART UHD 70\" XBR-70X855B", "SMART TV UHD 55'' 3D >> CURVO >> >> > >>> 55HU8700", >> >> > >>>>> "TV FULL HD LE40D3142 40\" - NEGRO", "TELEVISOR LED 42\" >> >> TC-42AS650L", >> >> > >>>>> "SMART TV LCD FHD 70\" LC70LE660", "TV LED FULL HD 58'' >> LE58D3140" >> >> > >>>>> ), pulgadas = c(48L, 40L, 40L, 28L, 40L, 32L, 32L, 55L, 40L, >> >> > >>>>> 24L, 42L, 50L, 40L, 48L, 50L, 55L, 55L, 55L, 55L, 65L, 65L, >> 65L, >> >> > >>>>> 75L, 40L, 42L, 42L, 49L, 49L, 43L, 49L, 49L, 49L, 49L, 55L, >> 65L, >> >> > >>>>> 55L, 55L, 50L, 70L, 65L, 60L, 50L, 50L, 40L, 40L, 50L, 32L, >> 50L, >> >> > >>>>> 48L, 40L, 32L, 40L, 55L, 40L, 43L, 32L, 49L, 65L, 48L, 40L, >> 32L, >> >> > >>>>> 32L, 55L, 32L, 58L, 55L, 49L, 55L, 55L, 75L, 55L, 60L, 70L, >> 80L, >> >> > >>>>> 48L, 79L, 65L, 65L, 55L, 32L, 48L, 55L, 60L, 55L, 32L, 47L, >> 50L, >> >> > >>>>> 55L, 70L, 79L, 40L, 70L, 55L, 40L, 42L, 70L, 58L), >> precio.antes >> >> > >>> c(2799L, >> >> > >>>>> 1799L, 1699L, 599L, 1299L, 699L, 999L, 1999L, 999L, 499L, >> 1899L, >> >> > >>>>> 1799L, 2499L, 3999L, 3699L, 10999L, 4299L, 5499L, 6999L, >> 14999L, >> >> > >>>>> 8999L, 9999L, 14599L, 1999L, 2299L, 2299L, 2899L, 2999L, 2299L, >> >> > >>>>> 23992L, 3599L, 3799L, 4799L, 4999L, 8499L, 5999L, 4999L, 3999L, >> >> > >>>>> 11999L, 10999L, 4399L, 4499L, 3799L, 1399L, 2299L, 2799L, 999L, >> >> > >>>>> 2199L, 2299L, 2299L, 1299L, 1699L, 3499L, 1399L, 1549L, 1299L, >> >> > >>>>> 2399L, 6499L, 2999L, 999L, 1249L, 999L, 14999L, 799L, 5999L, >> >> > >>>>> 4499L, 4999L, 6499L, 12999L, 24999L, 8999L, 5999L, 7599L, >> 14999L, >> >> > >>>>> 2499L, 29999L, 13999L, 9999L, 9699L, 1299L, 2399L, 6999L, >> 7999L, >> >> > >>>>> 3699L, 999L, 1899L, 2999L, 7999L, 8499L, 24999L, 1399L, 13999L, >> >> > >>>>> 8499L, 999L, 2599L, 5799L, 2399L), precio.nuevo = c(2299, 1399, >> >> > >>>>> 1299, 549, 1099, 629, 799, 1699, 849, 439, 1499, 1549, 1759.2, >> >> > >>>>> 2099.3, 2309.3, 7699.3, 2799.3, 3639.3, 4899.3, 10499.3, >> 5109.3, >> >> > >>>>> 6999.3, 10219.3, 1399, 1599, 1599, 2199, 2199, 1299, 23992, >> 2299, >> >> > >>>>> 2299, 2899, 2999, 5999, 3899, 4999, 3999, 8999, 6999, 4099, >> 3999, >> >> > >>>>> 3499, 1299, 1799, 2399, 799, 2199, 1799, 1999, 1199, 1599, >> 2999, >> >> > >>>>> 1199, 1399, 1099, 1999, 5999, 2799, 999, 1199, 949, 7999, 799, >> >> > >>>>> 5299, 4299, 3999, 5999, 11999, 23999, 7999, 5699, 7599, 14499, >> >> > >>>>> 2399, 29999, 11999, 8999, 7499, 1099, 2199, 6599, 7099, 3599, >> >> > >>>>> 899, 1599, 2199, 4999, 6499, 19999, 1399, 9999, 5999, 999, >> 2599, >> >> > >>>>> 5699, 2399), dif.precios = c(500, 400, 400, 50, 200, 70, 200, >> >> > >>>>> 300, 150, 60, 400, 250, 739.8, 1899.7, 1389.7, 3299.7, 1499.7, >> >> > >>>>> 1859.7, 2099.7, 4499.7, 3889.7, 2999.7, 4379.7, 600, 700, 700, >> >> > >>>>> 700, 800, 1000, 0, 1300, 1500, 1900, 2000, 2500, 2100, 0, 0, >> >> > >>>>> 3000, 4000, 300, 500, 300, 100, 500, 400, 200, 0, 500, 300, >> 100, >> >> > >>>>> 100, 500, 200, 150, 200, 400, 500, 200, 0, 50, 50, 7000, 0, >> 700, >> >> > >>>>> 200, 1000, 500, 1000, 1000, 1000, 300, 0, 500, 100, 0, 2000, >> >> > >>>>> 1000, 2200, 200, 200, 400, 900, 100, 100, 300, 800, 3000, 2000, >> >> > >>>>> 5000, 0, 4000, 2500, 0, 0, 100, 0), dif.porcentual = c(17.86, >> >> > >>>>> 22.23, 23.54, 8.35, 15.4, 10.01, 20.02, 15.01, 15.02, 12.02, >> >> > >>>>> 21.06, 13.9, 29.6, 47.5, 37.57, 30, 34.88, 33.82, 30, 30, >> 43.22, >> >> > >>>>> 30, 30, 30.02, 30.45, 30.45, 24.15, 26.68, 43.5, 0, 36.12, >> 39.48, >> >> > >>>>> 39.59, 40.01, 29.42, 35.01, 0, 0, 25, 36.37, 6.82, 11.11, 7.9, >> >> > >>>>> 7.15, 21.75, 14.29, 20.02, 0, 21.75, 13.05, 7.7, 5.89, 14.29, >> >> > >>>>> 14.3, 9.68, 15.4, 16.67, 7.69, 6.67, 0, 4, 5.01, 46.67, 0, >> 11.67, >> >> > >>>>> 4.45, 20, 7.69, 7.69, 4, 11.11, 5, 0, 3.33, 4, 0, 14.29, 10, >> >> > >>>>> 22.68, 15.4, 8.34, 5.72, 11.25, 2.7, 10.01, 15.8, 26.68, 37.5, >> >> > >>>>> 23.53, 20, 0, 28.57, 29.42, 0, 0, 1.72, 0), rangos >> c("S/.1500 - >> >> > >>> S/.2500", >> >> > >>>>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", >> >> "S/.500 - >> >> > >>>>> S/.1500", >> >> > >>>>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >> >> > >>>>> "S/.500 - S/.1500", "< S/.500", "S/.500 - S/.1500", "S/.1500 - >> >> > >>> S/.2500", >> >> > >>>>> "S/.1500 - S/.2500", "S/.1500 - S/.2500", "S/.1500 - S/.2500", >> >> > >>>>> "> S/.4,500", "S/.2500 - S/.3500", "S/.3500 - S/.4500", "> >> >> S/.4,500", >> >> > >>>>> "> S/.4,500", "> S/.4,500", "> S/.4,500", "> S/.4,500", >> "S/.500 - >> >> > >>> S/.1500", >> >> > >>>>> "S/.1500 - S/.2500", "S/.1500 - S/.2500", "S/.1500 - S/.2500", >> >> > >>>>> "S/.1500 - S/.2500", "S/.500 - S/.1500", "> S/.4,500", >> "S/.1500 - >> >> > >>> S/.2500", >> >> > >>>>> "S/.1500 - S/.2500", "S/.2500 - S/.3500", "S/.2500 - S/.3500", >> >> > >>>>> "> S/.4,500", "S/.3500 - S/.4500", "> S/.4,500", "S/.3500 - >> >> S/.4500", >> >> > >>>>> "> S/.4,500", "> S/.4,500", "S/.3500 - S/.4500", "S/.3500 - >> >> S/.4500", >> >> > >>>>> "S/.2500 - S/.3500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >> >> > >>>>> "S/.1500 - S/.2500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >> >> > >>>>> "S/.1500 - S/.2500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >> >> > >>>>> "S/.1500 - S/.2500", "S/.2500 - S/.3500", "S/.500 - S/.1500", >> >> > >>>>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >> >> > >>>>> "> S/.4,500", "S/.2500 - S/.3500", "S/.500 - S/.1500", "S/.500 >> - >> >> > >>> S/.1500", >> >> > >>>>> "S/.500 - S/.1500", "> S/.4,500", "S/.500 - S/.1500", "> >> >> S/.4,500", >> >> > >>>>> "S/.3500 - S/.4500", "S/.3500 - S/.4500", "> S/.4,500", "> >> >> S/.4,500", >> >> > >>>>> "> S/.4,500", "> S/.4,500", "> S/.4,500", "> S/.4,500", "> >> >> S/.4,500", >> >> > >>>>> "S/.1500 - S/.2500", "> S/.4,500", "> S/.4,500", "> S/.4,500", >> >> > >>>>> "> S/.4,500", "S/.500 - S/.1500", "S/.1500 - S/.2500", "> >> >> S/.4,500", >> >> > >>>>> "> S/.4,500", "S/.3500 - S/.4500", "S/.500 - S/.1500", >> "S/.1500 - >> >> > >>> S/.2500", >> >> > >>>>> "S/.1500 - S/.2500", "> S/.4,500", "> S/.4,500", "> S/.4,500", >> >> > >>>>> "S/.500 - S/.1500", "> S/.4,500", "> S/.4,500", "S/.500 - >> >> S/.1500", >> >> > >>>>> "S/.2500 - S/.3500", "> S/.4,500", "S/.1500 - S/.2500")), >> .Names >> >> > >>> c("id", >> >> > >>>>> "marca", "producto", "pulgadas", "precio.antes", >> "precio.nuevo", >> >> > >>>>> "dif.precios", "dif.porcentual", "rangos"), class >> "data.frame", >> >> > >>> row.names >> >> > >>>>> = c(NA, >> >> > >>>>> -97L)) >> >> > > >> >> > > ______________________________________________ >> >> > > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> >> > > https://stat.ethz.ch/mailman/listinfo/r-help >> >> > > PLEASE do read the posting guide >> >> http://www.R-project.org/posting-guide.html >> >> > > and provide commented, minimal, self-contained, reproducible code. >> >> > >> >> > David Winsemius >> >> > Alameda, CA, USA >> >> > >> >> > >> >> >> >> >> > >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide >> http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. > > >[[alternative HTML version deleted]]
My code is not correct. The idea is to use apply instead of a loop. more efficiency. Karim On Sun, Oct 11, 2015 at 6:42 AM, Omar Andr? Gonz?les D?az < oma.gonzales at gmail.com> wrote:> Thanks Karim. linio.tv is in the email. In the last part. > El oct 11, 2015 12:39 AM, "Karim Mezhoud" <kmezhoud at gmail.com> escribi?: > >> Hi, >> omit unlist and test. otherwise you can use apply function. >> >> draft: >> >> df1 <- apply(linio.tv, 1, function(x) strsplit(x[,idproductio], >> "[^A-Z0-9-]+")) >> >> fct <- function(linio.tv){ >> >> if(any(grep("[A-Z][0-9]", linio.tv[,idx_productio]))) { >> >> linio.tv[,idx(id)] <- linio.tv[,idx_productio] >> >> } >> >> else { >> linio.tv[,idx(id)]<- NA >> } >> } >> >> df2 <- apply(df1, 1, function(x) fct(x)) >> >> I can't test this draft because I have not linio.tv >> >> >> Karim >> >> >> for (i in 1:nrow(linio.tv)) { >> >> v <- unlist(strsplit(linio.tv$producto[i], "[^A-Z0-9-]+")) # >> isolate tokens >> >> if(any(grep("[A-Z][0-9]", v))) { >> >> linio.tv$id[i] <- v[grep("[A-Z][0-9]", v)] >> >> } >> >> else { >> linio.tv$id[i] <- NA >> } >> } >> >> On Sun, Oct 11, 2015 at 6:07 AM, Omar Andr? Gonz?les D?az < >> oma.gonzales at gmail.com> wrote: >> >>> Hi Boris, >>> >>> I've modified a little the for loop to catch the IDs (if there is any) >>> otherwise to put NAs. This is for another data set. >>> >>> >>> >>> for (i in 1:nrow(linio.tv)) { >>> >>> v <- unlist(strsplit(linio.tv$producto[i], "[^A-Z0-9-]+")) # >>> isolate tokens >>> >>> if(any(grep("[A-Z][0-9]", v))) { >>> >>> linio.tv$id[i] <- v[grep("[A-Z][0-9]", v)] >>> >>> } >>> >>> else { >>> linio.tv$id[i] <- NA >>> } >>> } >>> >>> >>> I get this warning messages, nevertheless the IDs column get the correct >>> values: >>> >>> Warning messages: >>> 1: In linio.tv$id[i] <- v[grep("[A-Z][0-9]", v)] : >>> number of items to replace is not a multiple of replacement length >>> 2: In linio.tv$id[i] <- v[grep("[A-Z][0-9]", v)] : >>> number of items to replace is not a multiple of replacement length >>> >>> >>> The problem: >>> >>> There are entries where the grep part is not specific enough. >>> >>> Like this one: "UN50JU6500-NEGRO". It satifies the rule in: >>> >>> linio.tv$id[i] <- v[grep("[A-Z][0-9]", v)] , but is not supposed to >>> take >>> also: "UN50JU6500-NEGRO" entirely, only this part: "UN50JU6500". >>> >>> >>> I've noticed this rule: the IDs can have at maxium 1 letter after the >>> "-". >>> If it contains more than 1, that part should not be considered. >>> >>> "TC-L42AS610" >>> >>> Also IDs can start with numbers: 1,2, or 3. >>> >>> "KDL-40R354B" >>> >>> >>> >>> >>> May you clarify to me if it's something that can be done within R? I'm >>> trying to figure this out, but with any good result. >>> >>> I could cleaned with "sub()" (there is only one entry giving me troubles) >>> but the idea is not to have "technical debt" for the future. >>> >>> >>> >>> >>> This is the new data set, I'm talking about: >>> >>> >>> >>> >>> >>> >>> linio.tv <- structure(list(id = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, >>> NA, >>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), marca = c("LG", "SAMSUNG", >>> "SAMSUNG", "SAMSUNG", "LG", "LG", "LG", "LG", "LG", "LG", "LG", >>> "SAMSUNG", "LG", "LG", "SAMSUNG", "LG", "LG", "LG", "LG", "SAMSUNG", >>> "LG", "LG", "LG", "SONY", "SAMSUNG", "LG", "LG", "SAMSUNG", "SONY", >>> "SAMSUNG", "LG", "LG", "LG", "IMACO", "SAMSUNG", "LG", "SAMSUNG", >>> "SAMSUNG", "LG", "HAIER", "LG", "SONY", "SAMSUNG", "LG", "LG", >>> "LG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "SONY", "HISENSE", "LG", >>> "SAMSUNG", "LG", "SAMSUNG", "LG", "SAMSUNG", "SAMSUNG", "CONTINENTAL", >>> "LG", "IMACO", "AOC", "AOC", "SAMSUNG", "LG", "SONY", "LG", "LG", >>> "SONY", "SAMSUNG", "SAMSUNG", "PANASONIC", "LG", "SAMSUNG", "NEX", >>> "IMACO", "LG", "LG", "CONTINENTAL", "SONY", "LG", "LG", "SAMSUNG", >>> "LG", "LG", "LG", "LG", "LG", "SAMSUNG", "LG", "LG", "SAMSUNG", >>> "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "AOC", "LG", "LG", >>> "AOC", "LG", "SAMSUNG", "LG", "SAMSUNG", "SAMSUNG", "LG", "LG", >>> "SAMSUNG", "SAMSUNG", "SONY", "LG", "SAMSUNG", "SAMSUNG", "LG", >>> "SAMSUNG", "LG", "SAMSUNG", "LG", "SAMSUNG", "LG", "SAMSUNG", >>> "SAMSUNG", "SAMSUNG", "SAMSUNG", "LG", "PANASONIC", "PANASONIC", >>> "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "SONY", >>> "LG", "LG", "PANASONIC", "AOC", "SAMSUNG", "LG", "SAMSUNG", "LG", >>> "SAMSUNG", "LG", "LG", "LG", "PANASONIC", "PANASONIC", "LG", >>> "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", >>> "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "LG", "SAMSUNG", >>> "LG", "LG", "SAMSUNG", "LG"), producto = c("COMBO SMART - LG TV LED 4K >>> ULTRA HD 43'' - 43UF6750 + GOO...", >>> "SAMSUNG TV LED SMART HD 32'' UN32J4300 - NEGRO", "SAMSUNG TV LED 3D >>> SMART >>> FULL HD 48'' - 48J6400", >>> "SAMSUNG TV LED 3D SMART FULL HD 55'' - 55J6400", "LG TV SMART LED HD >>> 32\" >>> 32LF585B - BLANCO", >>> "LG TV SLIM ULTRA HD 3D WEBOS 2.0 49'' 49UF8500 - PLATEADO", >>> "LG TV SMART WEBOS 2.0 FULL HD 43\" 43LF5900 -NEGRO", "LG TV LED HD 32\" >>> - >>> 32LF550B", >>> "LG TV LED SMART FULL HD 43'' 43LF6350 - NEGRO", "LG TV LED SMART HD >>> 32\" >>> - 32LF585B", >>> "LG GAME TV LED FULL HD 49\" - 49LF5410", "SAMSUNG TV LED FULL HD 60'' - >>> UN60FH6003", >>> "LG TV SMART WEBOS 2.0 FULL HD 49\" - 49LF6350", "LG TV LED FULL HD >>> 43'' - >>> 43LF5410", >>> "SAMSUNG TV SMART FULL HD CURVO 40'' TIZEN - UN40J6500", "LG TV SMART >>> WEBOS 2.0 ULTRA HD 4K 43\" - 43UF6400", >>> "LG TV SLIM LED CINEMA 3D FULL HD 42'' 42LB6200 INCLUYE 02...", >>> "LG GAMETV LED FULL HD 43\" - 43LF5400", "LG GAME TV LED FULL HD 49\" - >>> 49LF5410", >>> "TELEVISOR SAMSUNG UN40J5500 SMART TV LED FULL HD 40''-PLA...", >>> "LG SMART 4K ULTRA HD 55\" - 55UB8200", "LG -TV LED SMART WEBOS 2.0 FULL >>> HD 55\" - 55LF6350", >>> "LG - GAME TV LED FULL HD 43'' - 43LF5410", "SONY - TV LED SMART HD >>> 32'' - >>> 32R505C", >>> "SAMSUNG TV LED 3D SMART FULL HD 40'' - UN40H6400", "LG SMART TV 32\" HD >>> WEBOS 2.0 32LF595B", >>> "LG - TV LED WEBOS 3D SMART ULTRA HD CURVO 55'' 55UG8700 ...", >>> "SAMSUNG TV LED FULL HD 40\" UN40JH5005 - NEGRO", "SONY TV LED FULL HD >>> 40'' >>> - KDL-40R354B", >>> "SAMSUNG TV LED SMART FULL HD 40'' TIZEN UN40J5500 - PLATEADO", >>> "LG TV LED FULL HD 42'' ULTRA SLIM 42LY340C - NEGRO", "LG TV SMART LED >>> FULL >>> HD 43\" - 43LF6350", >>> "LG TV LED CURVO 55\" SMART ULTRA HD 4K CINEMA 3D - 55UC9700", >>> "IMACO - TV LED HD 24?? - LED24HD", "TELEVISOR SAMSUNG UN32J4300 SMART TV >>> LED HD 32''-NEGRO", >>> "LG TV 3D SMART LED ULTRA HD 65\" - 65UF8500", "SAMSUNG - TV LED SMART 3D >>> 65\" FULL HD SERIE 8 INTERACTIVO...", >>> "SAMSUNG - TV LED HD 32\" 32JH4005 - NEGRO", "LG TV 55\" SMART ULTRA HD >>> 4K >>> CINEMA 3D 55UB8500", >>> "HAIER TV LED HD LIVE GREEN 24'' - 24B8000", "LG TV LED FULL HD 47'' - >>> 47LB5610", >>> "SONY TV LED FULL HD 32'' - KDL-32R304B", "SAMSUNG TV LED SERIE 5 FULL HD >>> 39? - 39FH5005", >>> "LG - TV SAMT SLIM ULTRA HD 4K WEBOS 2.0 55'' 55UF7700 - P...", >>> "LG TV LED CURVO 55\" SMART ULTRA HD 4K CINEMA 3D - 55UC9700", >>> "LG TV MONITOR LED HD 23.6? - 24MT47A", "SAMSUNG - MONITOR LED 32\" >>> MD32C - >>> NEGRO", >>> "TELEVISOR SAMSUNG UN40J6400 SMART TV LED 3D FULL HD 40''-...", >>> "SAMSUNG LED SMART FULL HD 48'' - UN48J6500", "SONY - TV LED SMART FULL >>> HD >>> 40'' - 40R555C", >>> "TELEVISOR HISENSE LED 40\" 40K221W SMART TV LED FULL HD", "LG TV MONITOR >>> LED HD 23.6? - 24MT47A", >>> "TELEVISOR SAMSUNG UN48J6400 SMART TV LED 3D FULL HD 48''-...", >>> "LG 49UB8500 LED 49\" SMART 3D 4K", "SAMSUNG TV LED 3D SMART FULL HD 40'' >>> TIZEN UN40J6400 - NEGRO", >>> "LG TV LED FULL HD 42\" - 42LY340C", "SAMSUNG TV LED HD 32'' UN32J4000 - >>> NEGRO", >>> "TELEVISOR SAMSUNG UN48J5500 SMART TV LED FULL HD 48''-PLA...", >>> "CONTINENTAL - TV LED 15.6\" CELED95935, INCLUYE RACK", "LG TV LED 4K >>> ULTRA >>> HD 43\" - 43UF6750", >>> "IMACO - TV LED HD 16?? - LED16HD", "AOC - TELEVISOR HD 32\" LE32W454F- >>> NEGRO", >>> "AOC TV LED HD 20\" - LE20A1140", "SAMSUNG TV LED HD 32'' - UN32J4000", >>> "LG - TV MONITOR 27.5? - 28MT47B", "SONY TV LED FULL HD 40'' - >>> KDL-40R354B", >>> "LG TV MONITOR LED HD 23.6? - 24MT47A", "LG GAME TV LED FULL HD 49\" - >>> 49LF5410", >>> "SONY TV LED FULL HD 40'' - KDL-40R354B", "SAMSUNG - UN48J6400 LED FULL >>> HD >>> 48\"SMART TIZEN 3D 2015 - ...", >>> "SAMSUNG - MONITOR FULL HD 40\" MD40C - NEGRO", "PANASONIC LED SMART FULL >>> HD 50\" - TC-50AS600", >>> "LG - 43LF5410 LED 43\" FULL HD GAME - SILVER", "SAMSUNG - TELEVISOR LED >>> HD 32\" UN32JH4005 - NEGRO", >>> "NEX TV LED SMART HD 32\" USB WIFI INCORPORADO - LED3208SMR", >>> "IMACO - TV LED HD 19?? - LED19HD", "LG -TV LED HG 32\" - 32LF550B", >>> "LG - TELEVISOR LED 32\" HD 32LF550B", "CONTINENTAL - TV LED 19\" >>> CELED99935, INCLUYE RACK", >>> "SONY TV LED FULL HD 40'' - KDL-40R354B", "LG - TELEVISOR LED 32\" HD >>> SMART >>> TV 32LF585B - BLANCO", >>> "MONITOR TV LG 24MT47A LED HD 23.6?-PLATEADO", "TELEVISOR SAMSUNG >>> UN32J4300 >>> SMART TV LED HD 32''-NEGRO", >>> "LG GAME TV LED FULL HD 49\" - 49LF5400", "LG - TELEVISOR LED 32\" HD >>> SMART >>> TV 32LF585B ? BLANCO", >>> "LG - TELEVISOR LED 32\" HD 32LF550B", "LG TV LED HD 32'' - 32LF550B", >>> "LG TV LED SMART HD 32'' - 32LF585B", "SAMSUNG - TELEVISOR LED FULL HD >>> 40\" >>> UN40JH5005 ? NEGRO", >>> "LG LED FULL HD SMART TV 42''42LF5850 - PLATEADO", "LG TV LED WEBOS 3D >>> SMART ULTRA HD 49'' - 49UF8500", >>> "SAMSUNG - TV LED SMART FULL HD 40? UN40H5500 - NEGRO", "SAMSUNG TV LED >>> SMART HD 32'' UN32J4300 - NEGRO", >>> "SAMSUNG TV LED ALTA DEFINICI?N DTV USB 32\" - 32JH4005", "SAMSUNG - >>> TELEVISOR LED FULL HD 40\" UN40JH5005 - NEGRO", >>> "SAMSUNG TV LED SMART TIZEN 3D QUADCORE40\" - UN40J6400", "AOC TV LED HD >>> 32\" - LE32W454F +RACK FIJO", >>> "LG TV LED FULL HD 43'' - 43LF5410", "LG - TV LED WEBOS 3D SMART FULL HD >>> 55'' - 55LF6500", >>> "AOC 32\" LE32W454F HD DIGITAL LED TV + HOME THEATRE F1200U", >>> "LG TV LED WEBOS 3D SMART ULTRA HD 49'' - 49UF8500", "SAMSUNG TV LED ALTA >>> DEFINICI?N DTV USB 32\" - 32JH4005", >>> "LG - 42LF6400 LED FULL HD 42'' SMART WEBOS 3D - SILVER", "TELEVISOR >>> SAMSUNG UN48J5300 SMART TV LED FULL HD 48''-NEGRO", >>> "SAMSUNG UN40JH5005 LED FULL HD 40\" - NEGRO GLOSS", "LG - 24MT47A + >>> MONITOR TV 24\" PUERTOS HDMI, USB, AV - NEG...", >>> "LG TV LED SMART 4K ULTRA HD 55\" - 55UB8200", "SAMSUNG - 55J6400 LED >>> 55\" >>> SMART TIZEN 3D - BLACK", >>> "SAMSUNG TV CURVED SMART ULTRA HD 48'' TIZEN UN48JU6700 - ...", >>> "TELEVISI?N SONY KDL-32R505C LED 32\"-NEGRO", "LG TV LED CINEMA 3D 4K >>> SMART >>> ULTRA HD 49'' + 02 LENTES 3D...", >>> "SAMSUNG - 55J6400 LED 55\" SMART TIZEN 3D - BLACK", "SAMSUNG - 40J5500 >>> LED >>> 40\" SMART QUADCORE / BLUETOOTH* - S...", >>> "LG TV LED WEBOS 3D SMART ULTRA HD 49'' - 49UF8500", "SAMSUNG TV LED >>> SMART >>> FULL HD 40'' TIZEN UN40J5500 - PLATEADO", >>> "LG - TELEVISOR LED 42\" FULL HD SMART TV 42LF5850 ? PLAT...", >>> "TELEVISI?N SAMSUNG UN48J5500 LED SMART TV 48\"-PLATEADO", "LG - >>> TELEVISOR >>> LED 42\" FULL HD SMART TV 42LF5850 - PLATEADO", >>> "TELEVISOR SAMSUNG UN55JU6700 LED UHD 4K SMART 55'' - PLA...", >>> "LG - TV LED WEBOS 3D SMART SUPER ULTRA HD 55'' - 55UF9500", >>> "TELEVISOR SAMSUNG UN50JU6500 UHD 4K SMART 50'' - PLATEADO", >>> "SAMSUNG - TELEVISOR LED HD 40\" SMART UN40J5500 - NEGRO", "TELEVISOR >>> SAMSUNG UN48J6500 CURVO FULL HD SMART 48'' - P...", >>> "SAMSUNG - TELEVISOR LED HD 32\" SMART UN32J4300 - NEGRO", "LG TV LED >>> CINEMA 3D 4K SMART ULTRA HD 55'' 55UB8500 - NEGRO", >>> "TELEVISI?N PANASONIC TC-L40SV7L LED FULL-HD 40''-NEGRO", "PANASONIC TV >>> LED >>> 42?? FULL HD TC-L42E6L - NEGRO.", >>> "TELEVISOR SAMSUNG UN 40JH5005 LED FULL HD", "SAMSUNG - TV LED SMART >>> CURVO >>> 3D ULTRA HD 65? UN65HU9000...", >>> "SAMSUNG - UN48J5300 LED FULL HD SMART 2015 - BLACK", "SAMSUNG TV LED >>> SMART >>> FULL HD 50'' TIZEN UN50J5500 - PLATEADO", >>> "SAMSUNG - TV SMART 3D FULL HD 60? UN60H7100 - NEGRO", "SONY - TELEVISOR >>> LED SMART TV FULL HD 40'' KDL-40R555C - ...", >>> "LG TV 47\" LED FULL HD - 47LY340C", "LG TV UHD 4K 65UB9800 SMART 3D LED >>> TV >>> C/WEBOS 65' LENTES 3D", >>> "PANASONIC - TELEVISOR TC-L42AS610 LED SMART FULL HD 42?...", >>> "AOC - TELEVISOR LED 32\" - LE32W454F", "SAMSUNG TV LED 32? - >>> UN32FH4005G", >>> "LG TV SMART LED FULL HD 42\" - 42LF5850", "SAMSUNG TV LED 3D SMART FULL >>> HD >>> 40'' TIZEN UN40J6400 - NEGRO", >>> "LG TV SMART LED FULL HD 42\" - 42LF5850", "SAMSUNG TV LED HD 32'' >>> UN32JH4005 - NEGRO", >>> "LG TV PLASMA 2014 60\" FULL HD 1080P - 60PB5600", "LG TV LED CINEMA 3D >>> SMART FULL HD 55'' 55LB7050 - PLATEADO", >>> "LG TV LED SMART FULL HD 43'' 43LF6350 - NEGRO", "PANASONIC PUERTO USB >>> LED >>> 40\" - TC-L40SV7L", >>> "PANASONIC LED SMART FULL HD 42\" - TC-L42AS610", "LG TV SMART LED FULL >>> HD >>> 49\" - 49LF6350", >>> "SAMSUNG TV LED SMART ULTRA HD 50'' TIZEN UN50JU6500-NEGRO", >>> "SAMSUNG TV LED SMART ULTRA HD 50'' TIZEN UN50JU6500 - NEGRO", >>> "SAMSUNG TV SMART FULL HD CURVO 48'' TIZEN UN48J6500", "SAMSUNG TV SMART >>> ULTRA HD 4K 65'' - UN65JU6500", >>> "SAMSUNG UN48J5500 LED 48\" - PLATEADO", "SAMSUNG LED 32\" CONEXI?N WIFI >>> - >>> UN32J4300", >>> "SAMSUNG LED SMART 40'' CONEXI?N WI-FI DIRECT - UN40J5500", "SAMSUNG LED >>> SMART ULTRA HD 55\" - TVUN55JU6700", >>> "SAMSUNG TV CURVED 3D SMART ULTRA HD 65'' TIZEN UN65JU7500...", >>> "SAMSUNG TELEVISOR HG32NB460GF, 32\" LED, HD, 1366 X 768", "LG -TV SMART >>> LED FULL HD 55\" - 55LF6350", >>> "SAMSUNG TV LED SMART 3D 48\" - UN48H6400", "LG LED ULTRAHD 4K 49\" SMART >>> 3D - 49UB8300", >>> "LG - TV LED SMART HD 32'' 32LF585B - PLATEADO", "SAMSUNG - TV LED FULL >>> HD >>> 40\" UN40JH5005 - NEGRO GLOSS", >>> "LG - TV LED FULL HD 43'' 43LF5410 - PLATEADO"), precio.antes = c(2599L, >>> 1299L, 2899L, 3999L, 1199L, 4499L, 1999L, 1099L, 2299L, 1299L, >>> 2499L, 3999L, 2199L, 1899L, 2299L, 2299L, 1799L, 1499L, 2299L, >>> 1999L, 3999L, 3499L, 1549L, 1299L, 2299L, 2299L, 6999L, 1499L, >>> 1499L, 1899L, 1499L, 2099L, 6999L, 599L, 1299L, 9999L, 8999L, >>> 999L, 5999L, 599L, 2299L, 1299L, 1499L, 4999L, 6999L, 899L, 2299L, >>> 2499L, 3299L, 1799L, 1399L, 899L, 2499L, 4199L, 2299L, 1499L, >>> 1099L, 2499L, 399L, 2499L, 399L, 999L, 599L, 999L, 899L, 1499L, >>> 699L, 2299L, 1399L, 2499L, 2999L, 2499L, 1599L, 1149L, 999L, >>> 499L, 1089L, 1099L, 499L, 1499L, 1399L, 799L, 1299L, 2499L, 1399L, >>> 1259L, 1299L, 1299L, 1599L, 1999L, 3999L, 1999L, 1199L, 999L, >>> 1599L, 2299L, 999L, 1499L, 3699L, 1199L, 3899L, 1099L, 2299L, >>> 2499L, 1399L, 729L, 4199L, 3599L, 4999L, 1399L, 3999L, 4999L, >>> 2199L, 4499L, 2299L, 1699L, 2779L, 1699L, 5799L, 8999L, 3699L, >>> 2099L, 3299L, 1299L, 5900L, 1799L, 1799L, 1399L, 14999L, 2499L, >>> 2799L, 6299L, 1799L, 2417L, 9500L, 1799L, 799L, 999L, 1999L, >>> 2499L, 1899L, 999L, 2299L, 3699L, 2199L, 1699L, 1999L, 2499L, >>> 3499L, 3899L, 2999L, 7999L, 2299L, 1299L, 2099L, 5799L, 9999L, >>> 1110L, 3399L, 2799L, 3899L, 1299L, 1399L, 1499L), precio.nuevo = c(1799L, >>> 999L, 2299L, 3299L, 999L, 3199L, 1499L, 849L, 1399L, 979L, 1795L, >>> 2999L, 1899L, 1299L, 1699L, 1599L, 1499L, 1299L, 1699L, 1449L, >>> 3699L, 2499L, 1199L, 999L, 1499L, 899L, 4999L, 1199L, 1199L, >>> 1389L, 1299L, 1699L, 4899L, 549L, 999L, 7499L, 6700L, 849L, 4299L, >>> 549L, 1499L, 899L, 1299L, 3599L, 5354L, 538L, 1959L, 1599L, 2999L, >>> 1367L, 1099L, 589L, 2449L, 3199L, 1529L, 1229L, 839L, 1779L, >>> 329L, 1799L, 389L, 719L, 489L, 849L, 799L, 1185L, 599L, 1609L, >>> 1299L, 2179L, 2839L, 1999L, 1599L, 899L, 799L, 449L, 880L, 899L, >>> 429L, 1275L, 1199L, 589L, 999L, 1749L, 1199L, 1099L, 899L, 989L, >>> 1399L, 1999L, 2999L, 1599L, 999L, 819L, 1299L, 2299L, 789L, 1299L, >>> 3199L, 977L, 3089L, 849L, 1719L, 1799L, 1399L, 569L, 3979L, 3299L, >>> 3369L, 1093L, 3389L, 3289L, 1419L, 3429L, 1405L, 1499L, 1899L, >>> 1499L, 5199L, 6999L, 3199L, 1599L, 2999L, 1099L, 5089L, 1459L, >>> 1499L, 1289L, 12999L, 1739L, 2255L, 5879L, 1499L, 1929L, 8499L, >>> 1649L, 799L, 899L, 1659L, 1749L, 1609L, 831L, 2089L, 3659L, 1769L, >>> 1499L, 1599L, 2176L, 2749L, 2889L, 2899L, 5599L, 1899L, 1099L, >>> 1899L, 5199L, 8589L, 990L, 3169L, 2199L, 3899L, 949L, 1099L, >>> 1199L), dif.precios = c(800L, 300L, 600L, 700L, 200L, 1300L, >>> 500L, 250L, 900L, 320L, 704L, 1000L, 300L, 600L, 600L, 700L, >>> 300L, 200L, 600L, 550L, 300L, 1000L, 350L, 300L, 800L, 1400L, >>> 2000L, 300L, 300L, 510L, 200L, 400L, 2100L, 50L, 300L, 2500L, >>> 2299L, 150L, 1700L, 50L, 800L, 400L, 200L, 1400L, 1645L, 361L, >>> 340L, 900L, 300L, 432L, 300L, 310L, 50L, 1000L, 770L, 270L, 260L, >>> 720L, 70L, 700L, 10L, 280L, 110L, 150L, 100L, 314L, 100L, 690L, >>> 100L, 320L, 160L, 500L, 0L, 250L, 200L, 50L, 209L, 200L, 70L, >>> 224L, 200L, 210L, 300L, 750L, 200L, 160L, 400L, 310L, 200L, 0L, >>> 1000L, 400L, 200L, 180L, 300L, 0L, 210L, 200L, 500L, 222L, 810L, >>> 250L, 580L, 700L, 0L, 160L, 220L, 300L, 1630L, 306L, 610L, 1710L, >>> 780L, 1070L, 894L, 200L, 880L, 200L, 600L, 2000L, 500L, 500L, >>> 300L, 200L, 811L, 340L, 300L, 110L, 2000L, 760L, 544L, 420L, >>> 300L, 488L, 1001L, 150L, 0L, 100L, 340L, 750L, 290L, 168L, 210L, >>> 40L, 430L, 200L, 400L, 323L, 750L, 1010L, 100L, 2400L, 400L, >>> 200L, 200L, 600L, 1410L, 120L, 230L, 600L, 0L, 350L, 300L, 300L >>> ), dif.porcentual = c(30.78, 23.09, 20.7, 17.5, 16.68, 28.9, >>> 25.01, 22.75, 39.15, 24.63, 28.17, 25.01, 13.64, 31.6, 26.1, >>> 30.45, 16.68, 13.34, 26.1, 27.51, 7.5, 28.58, 22.6, 23.09, 34.8, >>> 60.9, 28.58, 20.01, 20.01, 26.86, 13.34, 19.06, 30, 8.35, 23.09, >>> 25, 25.55, 15.02, 28.34, 8.35, 34.8, 30.79, 13.34, 28.01, 23.5, >>> 40.16, 14.79, 36.01, 9.09, 24.01, 21.44, 34.48, 2, 23.82, 33.49, >>> 18.01, 23.66, 28.81, 17.54, 28.01, 2.51, 28.03, 18.36, 15.02, >>> 11.12, 20.95, 14.31, 30.01, 7.15, 12.81, 5.34, 20.01, 0, 21.76, >>> 20.02, 10.02, 19.19, 18.2, 14.03, 14.94, 14.3, 26.28, 23.09, >>> 30.01, 14.3, 12.71, 30.79, 23.86, 12.51, 0, 25.01, 20.01, 16.68, >>> 18.02, 18.76, 0, 21.02, 13.34, 13.52, 18.52, 20.77, 22.75, 25.23, >>> 28.01, 0, 21.95, 5.24, 8.34, 32.61, 21.87, 15.25, 34.21, 35.47, >>> 23.78, 38.89, 11.77, 31.67, 11.77, 10.35, 22.22, 13.52, 23.82, >>> 9.09, 15.4, 13.75, 18.9, 16.68, 7.86, 13.33, 30.41, 19.44, 6.67, >>> 16.68, 20.19, 10.54, 8.34, 0, 10.01, 17.01, 30.01, 15.27, 16.82, >>> 9.13, 1.08, 19.55, 11.77, 20.01, 12.93, 21.43, 25.9, 3.33, 30, >>> 17.4, 15.4, 9.53, 10.35, 14.1, 10.81, 6.77, 21.44, 0, 26.94, >>> 21.44, 20.01), pulgadas = c("43", "32", "48", "55", "32", "49", >>> "43", "32", "43", "32", "49", "60", "49", "43", "40", "43", "42", >>> "43", "49", "40", "55", "55", "43", "32", "40", "32", "55", "40", >>> "40", "40", "42", "43", "55", "24", "32", "65", "65", "32", "55", >>> "24", "47", "32", "39", "55", "55", "6", "32", "40", "48", "40", >>> "40", "6", "48", "49", "40", "42", "32", "48", "6", "43", "16", >>> "32", "20", "32", "5", "40", "6", "49", "40", "48", "40", "50", >>> "43", "32", "32", "19", "32", "32", "19", "40", "32", "6", "32", >>> "49", "32", "32", "32", "32", "40", "42", "49", "40", "32", "32", >>> "40", "40", "32", "43", "55", "32", "49", "32", "42", "48", "40", >>> "24", "55", "55", "48", "32", "49", "55", "40", "49", "40", "42", >>> "48", "42", "55", "55", "50", "40", "48", "32", "55", "40", "42", >>> "NA", "65", "NA", "50", "60", "40", "47", "65", "42", "32", "32", >>> "42", "40", "42", "32", "60", "55", "43", "40", "42", "49", "50", >>> "50", "48", "65", "48", "32", "40", "55", "65", "32", "55", "48", >>> "49", "32", "40", "43"), rangos = c("S/.1500 - S/.2500", "S/.500 - >>> S/.1500", >>> "S/.1500 - S/.2500", "S/.2500 - S/.3500", "S/.500 - S/.1500", >>> "S/.2500 - S/.3500", "S/.500 - S/.1500", "S/.500 - S/.1500", >>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >>> "S/.2500 - S/.3500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >>> "S/.1500 - S/.2500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >>> "S/.500 - S/.1500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >>> "S/.3500 - S/.4500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", "> S/.4,500", >>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - >>> S/.1500", >>> "S/.1500 - S/.2500", "> S/.4,500", "S/.500 - S/.1500", "S/.500 - >>> S/.1500", >>> "> S/.4,500", "> S/.4,500", "S/.500 - S/.1500", "S/.3500 - S/.4500", >>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - >>> S/.1500", >>> "S/.3500 - S/.4500", "> S/.4,500", "S/.500 - S/.1500", "S/.1500 - >>> S/.2500", >>> "S/.1500 - S/.2500", "S/.2500 - S/.3500", "S/.500 - S/.1500", >>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >>> "S/.2500 - S/.3500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >>> "S/.500 - S/.1500", "S/.1500 - S/.2500", "< S/.500", "S/.1500 - S/.2500", >>> "< S/.500", "S/.500 - S/.1500", "< S/.500", "S/.500 - S/.1500", >>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - >>> S/.2500", >>> "S/.500 - S/.1500", "S/.1500 - S/.2500", "S/.2500 - S/.3500", >>> "S/.1500 - S/.2500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >>> "S/.500 - S/.1500", "< S/.500", "S/.500 - S/.1500", "S/.500 - S/.1500", >>> "< S/.500", "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", >>> "S/.500 - S/.1500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - >>> S/.1500", >>> "S/.1500 - S/.2500", "S/.2500 - S/.3500", "S/.1500 - S/.2500", >>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - >>> S/.2500", >>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.2500 - S/.3500", >>> "S/.500 - S/.1500", "S/.2500 - S/.3500", "S/.500 - S/.1500", >>> "S/.1500 - S/.2500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >>> "S/.500 - S/.1500", "S/.3500 - S/.4500", "S/.2500 - S/.3500", >>> "S/.2500 - S/.3500", "S/.500 - S/.1500", "S/.2500 - S/.3500", >>> "S/.2500 - S/.3500", "S/.500 - S/.1500", "S/.2500 - S/.3500", >>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >>> "S/.500 - S/.1500", "> S/.4,500", "> S/.4,500", "S/.2500 - S/.3500", >>> "S/.1500 - S/.2500", "S/.2500 - S/.3500", "S/.500 - S/.1500", >>> "> S/.4,500", "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", >>> "> S/.4,500", "S/.1500 - S/.2500", "S/.1500 - S/.2500", "> S/.4,500", >>> "S/.500 - S/.1500", "S/.1500 - S/.2500", "> S/.4,500", "S/.1500 - >>> S/.2500", >>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >>> "S/.1500 - S/.2500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >>> "S/.1500 - S/.2500", "S/.3500 - S/.4500", "S/.1500 - S/.2500", >>> "S/.500 - S/.1500", "S/.1500 - S/.2500", "S/.1500 - S/.2500", >>> "S/.2500 - S/.3500", "S/.2500 - S/.3500", "S/.2500 - S/.3500", >>> "> S/.4,500", "S/.1500 - S/.2500", "S/.500 - S/.1500", "S/.1500 - >>> S/.2500", >>> "> S/.4,500", "> S/.4,500", "S/.500 - S/.1500", "S/.2500 - S/.3500", >>> "S/.1500 - S/.2500", "S/.3500 - S/.4500", "S/.500 - S/.1500", >>> "S/.500 - S/.1500", "S/.500 - S/.1500")), .Names = c("id", "marca", >>> "producto", "precio.antes", "precio.nuevo", "dif.precios", >>> "dif.porcentual", >>> "pulgadas", "rangos"), class = "data.frame", row.names = c(NA, >>> -164L)) >>> >>> >>> >>> >>> >>> >>> >>> >>> 2015-10-10 11:55 GMT-05:00 Omar Andr? Gonz?les D?az < >>> oma.gonzales at gmail.com> >>> : >>> >>> > Thank you very much to both of you. This information is very >>> enlightening >>> > to me. >>> > >>> > Cheers. >>> > >>> > >>> > 2015-10-10 1:11 GMT-05:00 Boris Steipe <boris.steipe at utoronto.ca>: >>> > >>> >> David answered most of this. Just a two short notes inline. >>> >> >>> >> >>> >> >>> >> >>> >> On Oct 10, 2015, at 12:38 AM, Omar Andr? Gonz?les D?az < >>> >> oma.gonzales at gmail.com> wrote: >>> >> >>> >> > David, Boris, so thankfull for your help. Both approaches are very >>> >> good. I got this solve with David's help. >>> >> > >>> >> > I find very insteresting Bori's for loop. And I need a little help >>> >> understanding the regex part on it. >>> >> > >>> >> > - The strsplit function: strsplit(ripley.tv$producto[i], >>> "[^A-Z0-9-]+") >>> >> > >>> >> > I understand for this: split every row by a sequence of any number >>> or >>> >> letter or "-" that appears at leat once (+ operator). >>> >> > >>> >> > 1.- What does mena the "^" symbol? If you remove it, just appeare >>> >> blanks. >>> >> > 2.- Why is there the necessity of "+" after the closing "]"? >>> >> > >>> >> > 3.- How this: ripley.tv$id[i] <- v[grep("[A-Z][0-9]", v)] >>> >> > Identifies also the IDs where "-" is present. Here the regex >>> does >>> >> not have the "-" included. >>> >> >>> >> Yes. I am not matching the entire token here. Note there is no "+": >>> The >>> >> two character-class expressions match exactly one uppercase character >>> >> adjacent to exactly one number. If this is found in a token, grep >>> returns >>> >> TRUE. It doesn't matter what else the token contains - the first regex >>> >> already took care of removing everything that's not needed. The >>> vector of >>> >> FALSEs and a single TRUE that grep() returns goes inside the square >>> >> brackets, and selects the token from v. >>> >> >>> >> >>> >> >>> >> > Also, I notice that David used the "-" at the begining of the >>> matching: >>> >> [-A-Z0-9], without the "^" (stars with) at the beginning. >>> >> >>> >> This can be very confusing about regular expressions: the same >>> character >>> >> can mean different things depending on where it is found. Between two >>> >> characters in a character class expresssion, the hyphen means "range". >>> >> Elsewhere it is a literal hyphen. David put his at the beginning, I >>> had it >>> >> at the end (in the first regex). Another tricky character is "?" >>> which can >>> >> mean 0,1 matches, or turn "greedy" matching off... >>> >> >>> >> Online regex testers are invaluable to develop a regex - one I >>> frequently >>> >> use is regexpal.com >>> >> >>> >> Cheers, >>> >> B. >>> >> >>> >> >>> >> > >>> >> > I would appreciate a response from you, gentlemen. >>> >> > >>> >> > Thanks again. >>> >> > >>> >> > >>> >> > >>> >> > >>> >> > >>> >> > >>> >> > >>> >> > >>> >> > >>> >> > >>> >> > >>> >> > 2015-10-09 18:32 GMT-05:00 David Winsemius <dwinsemius at comcast.net >>> >: >>> >> > >>> >> > On Oct 9, 2015, at 4:21 PM, Boris Steipe wrote: >>> >> > >>> >> > > I think you are going into the wrong direction here and this is a >>> >> classical example of what we mean by "technical debt" of code. Rather >>> than >>> >> tell to your regular expression what you are looking for, you are >>> handling >>> >> special cases with redundant code. This is ugly, brittle and >>> impossible to >>> >> maintain. >>> >> > > >>> >> > > Respect to you that you have recognized this. >>> >> > > >>> >> > > >>> >> > > The solution is rather simple: >>> >> > > >>> >> > > A) Isolate tokens. Your IDs contain only a limited set of >>> characters. >>> >> Split your strings along the characters that are not found in IDs to >>> >> isolate candidate tokens, place them into a vector. >>> >> > > >>> >> > > B) Evaluate your tokens: as far as I can see IDs all contain >>> letters >>> >> AND numbers. This is a unique characteristic. Thus it is sufficient >>> to grep >>> >> for a letter/number pair in a token to identify it as an ID. >>> >> > > >>> >> > > Should you ever find a need to accommodate differently formed IDs, >>> >> there are only two, well defined places with clearly delegated roles >>> where >>> >> changes might be needed. >>> >> > > >>> >> > > Here is the code: >>> >> > > >>> >> > > for (i in 1:nrow(ripley.tv)) { >>> >> > > v <- unlist(strsplit(ripley.tv$producto[i], >>> "[^A-Z0-9-]+")) # >>> >> isolate tokens >>> >> > > ripley.tv$id[i] <- v[grep("[A-Z][0-9]", v)] # identify IDs >>> >> and store >>> >> > > } >>> >> > >>> >> > That logic actually simplifies the regex strategy as well: >>> >> > >>> >> > sub("(.*[ \n])([-A-Z0-9]{6,12})(.*)", "\\2", >>> >> > ripley.tv$producto, >>> >> > ignore.case = T) >>> >> > >>> >> > >>> >> > Almost succeeds, with a few all-character words, but if you require >>> one >>> >> number in the middle you get full results: >>> >> > >>> >> > sub("(.*[ \n])([-A-Z0-9]{3,6}[0-9][-A-Z0-9]{2,6})(.*)", "\\2", >>> >> > ripley.tv$producto, >>> >> > ignore.case = T) >>> >> > >>> >> > [1] "48J6400" "40J5300" "TC-40CS600L" "LE28F6600" >>> >> "LE40K5000N" >>> >> > [6] "LE32B7000" "LE32K5000N" "LE55B8000" "LE40B8000" >>> "LE24B8000" >>> >> > [11] "TC-42AS610" "LE50K5000N" "40JU6500" "48JU6500" >>> "50JU6500" >>> >> > [16] "55JS9000" "55JU6500" "55JU6700" "55JU7500" >>> "65JS9000" >>> >> > [21] "65JU6500" "65JU7500" "75JU6500" "40LF6350" >>> "42LF6400" >>> >> > [26] "42LF6450" "49LF6450" "LF6400" "43UF6750" >>> "49UF6750" >>> >> > [31] "UF6900" "49UF7700" "49UF8500" "55UF7700" >>> "65UF7700" >>> >> > [36] "55UF8500" "TC-55CX640W" "TC-50CX640W" "70UF7700" >>> "UG8700" >>> >> > [41] "LF6350" "KDL-50FA95C" "KDL50W805C" "KDL-40R354B" >>> "40J5500" >>> >> > [46] "50J5500" "32JH4005" "50J5300" "48J5300" >>> "40J6400" >>> >> > [51] "KDL-32R505C" "KDL-40R555C" "55J6400" "40JH5005" >>> "43LF5410" >>> >> > [56] "32LF585B" "49LF5900" "KDL-65W855C" "UN48J6500" >>> "LE40F1551" >>> >> > [61] "TC-32AS600L" "KDL-32R304B" "55EC9300" "LE32W454F" >>> "58UF8300" >>> >> > [66] "KDL-55W805C" "XBR-49X835C" "XBR-55X855C" "XBR-65X905C" >>> >> "XBR-75X945C" >>> >> > [71] "XBR-55X905C" "LC60UE30U" "LC70UE30U" "LC80UE30U" >>> "48J5500" >>> >> > [76] "79UG8800" "65UF9500" "65UF8500" "55UF9500" >>> "32J4300" >>> >> > [81] "KDL-48R555C" "55UG8700" "60UF8500" "55LF6500" >>> "32LF550B" >>> >> > [86] "47LB5610" "TC-50AS600L" "XBR-55X855B" "LC70SQ17U" >>> >> "XBR-79X905B" >>> >> > [91] "TC-40A400L" "XBR-70X855B" "55HU8700" "LE40D3142" >>> >> "TC-42AS650L" >>> >> > [96] "LC70LE660" "LE58D3140" >>> >> > >>> >> > > >>> >> > > >>> >> > > >>> >> > > Cheers, >>> >> > > Boris >>> >> > > >>> >> > > >>> >> > > >>> >> > > On Oct 9, 2015, at 5:48 PM, Omar Andr? Gonz?les D?az < >>> >> oma.gonzales at gmail.com> wrote: >>> >> > > >>> >> > >>>>> ripley.tv <- structure(list(id = c(NA, NA, NA, NA, NA, NA, >>> NA, >>> >> NA, >>> >> > >>> NA, NA, >>> >> > >>>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>> NA, >>> >> > >>>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>> NA, >>> >> > >>>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>> NA, >>> >> > >>>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>> NA, >>> >> > >>>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>> NA, >>> >> > >>>>> NA, NA, NA, NA, NA, NA, NA), marca = c("SAMSUNG", "SAMSUNG", >>> >> > >>>>> "PANASONIC", "HAIER", "HAIER", "HAIER", "HAIER", "HAIER", >>> "HAIER", >>> >> > >>>>> "HAIER", "PANASONIC", "HAIER", "SAMSUNG", "SAMSUNG", >>> "SAMSUNG", >>> >> > >>>>> "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", >>> "SAMSUNG", >>> >> > >>>>> "SAMSUNG", "SAMSUNG", "LG", "LG", "LG", "LG", "LG", "LG", >>> "LG", >>> >> > >>>>> "LG", "LG", "LG", "LG", "LG", "LG", "PANASONIC", "PANASONIC", >>> >> > >>>>> "LG", "LG", "LG", "SONY", "SONY", "SONY", "SAMSUNG", >>> "SAMSUNG", >>> >> > >>>>> "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "SONY", "SONY", >>> >> "SAMSUNG", >>> >> > >>>>> "SAMSUNG", "LG", "LG", "LG", "SONY", "SAMSUNG", "AOC", >>> >> "PANASONIC", >>> >> > >>>>> "SONY", "LG", "AOC", "LG", "SONY", "SONY", "SONY", "SONY", >>> "SONY", >>> >> > >>>>> "SONY", "SHARP", "SHARP", "SHARP", "SAMSUNG", "LG", "LG", >>> "LG", >>> >> > >>>>> "LG", "SAMSUNG", "SONY", "LG", "LG", "LG", "LG", "LG", >>> >> "PANASONIC", >>> >> > >>>>> "SONY", "SHARP", "SONY", "PANASONIC", "SONY", "SAMSUNG", >>> "AOC", >>> >> > >>>>> "PANASONIC", "SHARP", "AOC"), producto = c("SMART TV LED FHD >>> 48\" >>> >> 3D >>> >> > >>>>> 48J6400", >>> >> > >>>>> "SMART TV LED FHD 40\" 40J5300", "TV LED FULL HD 40'' >>> >> TC-40CS600L", >>> >> > >>>>> "TELEVISOR LED LE28F6600 28\"", "SMART TV 40\" HD LE40K5000N", >>> >> > >>>>> "TV LED HD 32'' LE32B7000", "SMART TV 32'' LE32K5000N", "TV >>> LED >>> >> FHD >>> >> > >>> 55\" - >>> >> > >>>>> LE55B8000", >>> >> > >>>>> "TV LED LE40B8000 FULL HD 40\"", "TV LE24B8000 LED HD 24\" - >>> >> NEGRO", >>> >> > >>>>> "TV LED FULL HD 42'' TC-42AS610", "TELEVISOR LED LE50K5000N >>> 50\"", >>> >> > >>>>> "SMART TV LED UHD 40\" 40JU6500", "SMART TV ULTRA HD 48'' >>> >> 48JU6500", >>> >> > >>>>> "SMART TV 50JU6500 LED UHD 50\" - NEGRO", "SMART TV ULTRA HD >>> 55'' >>> >> 3D >>> >> > >>>>> 55JS9000", >>> >> > >>>>> "SMART TV LED UHD 55\" 55JU6500", "SMART TV ULTRA HD 55'' >>> >> 55JU6700", >>> >> > >>>>> "SMART TV CURVO 55JU7500 LED UHD 55\" 3D - NEGRO", "SMART TV >>> >> ULTRA HD >>> >> > >>> 65'' >>> >> > >>>>> 3D 65JS9000", >>> >> > >>>>> "SMART TV 65JU6500 LED UHD 65\"", "SMART TV ULTRA HD 65'' >>> >> 65JU7500", >>> >> > >>>>> "SMART TV LED UHD 75\" 75JU6500", "SMART TV WEB OS 40\" FULL >>> HD >>> >> > >>> 40LF6350", >>> >> > >>>>> "SMART TV 3D 42\" FULL HD 42LF6400", "TV LED 42\" FULL HD >>> CINEMA >>> >> 3D >>> >> > >>>>> 42LF6450", >>> >> > >>>>> "TV LED 49\" FULL HD CINEMA 3D 49LF6450", "SMART TV LF6400 >>> 49\" >>> >> FULL HD >>> >> > >>>>> 3D", >>> >> > >>>>> "TV 43UF6750 43\" ULTRA HD 4K", "TV 49\" ULTRA HD 4K >>> 49UF6750", >>> >> > >>>>> "TV LED 49\" ULTRA HD SMART UF6900", "SMART TV 49UF7700 49\" >>> >> ULTRA HD >>> >> > >>> 4K", >>> >> > >>>>> "SMART TV 49UF8500 49\" ULTRA HD 4K 3D", "TV LED 55\" CINEMA >>> 3D >>> >> SMART >>> >> > >>> TV >>> >> > >>>>> 55UF7700", >>> >> > >>>>> "SMART TV 65UF7700 65\" ULTRA HD 4K", "SMART TV 55UF8500 55\" >>> >> ULTRA HD >>> >> > >>> 4K >>> >> > >>>>> 3D", >>> >> > >>>>> "TV LED 55\" ULTRA HD 4K SMART TC-55CX640W", "TV LED 50\" >>> ULTRA >>> >> HD 4K >>> >> > >>> SMART >>> >> > >>>>> TC-50CX640W", >>> >> > >>>>> "SMART TV 70UF7700 3D ULTRA HD 70\"", "TV LED CURVO 65\" >>> ULTRA HD >>> >> 4K >>> >> > >>> CINEMA >>> >> > >>>>> SMART UG8700", >>> >> > >>>>> "TV LED 60\" FULL HD SMART LF6350", "SMART TV KDL-50FA95C 50\" >>> >> FULL HD >>> >> > >>> 3D", >>> >> > >>>>> "SMART TV KDL50W805C 50\" FULL HD 3D", "TV LED 40\" FULL HD >>> >> > >>> KDL-40R354B", >>> >> > >>>>> "SMART TV LED FULL HD 40'' 40J5500", "SMART TV LED FULL HD >>> 50'' >>> >> > >>> 50J5500", >>> >> > >>>>> "TV LED HD 32'' 32JH4005", "SMART TV LED FULL HD 50\" >>> 50J5300", >>> >> > >>>>> "SMART TV LED 48\" FULL HD 48J5300", "SMART TV FULL HD 40'' 3D >>> >> > >>> 40J6400", >>> >> > >>>>> "TV LED 32\" HD SMART KDL-32R505C", "TV LED 40\" SMART FULL HD >>> >> > >>> KDL-40R555C >>> >> > >>>>> - NEGRO", >>> >> > >>>>> "SMART TV LED FHD 55\" 3D 55J6400", "TV 40JH5005 LED FHD 40\" >>> - >>> >> NEGRO", >>> >> > >>>>> "TV 43\" FULL HD 43LF5410", "SMART TV 32LF585B LED HD 32\" - >>> >> BLANCO", >>> >> > >>>>> "TV LED 49\" FULL HD SMART 49LF5900", "SMART TV 65\" FULL HD >>> 3D >>> >> > >>>>> KDL-65W855C", >>> >> > >>>>> "SMART TV LED FHD 48\" UN48J6500", "TV LED 40\" FULL HD >>> >> LE40F1551", >>> >> > >>>>> "TV LED 32'' SMART HD TC-32AS600L", "TV LED 32'' HD >>> KDL-32R304B", >>> >> > >>>>> "TV OLED 55\" SMART 3D FULL HD 55EC9300 PLATEADO", "TV LED HD >>> 32'' >>> >> > >>>>> LE32W454F", >>> >> > >>>>> "TV LED 58\" ULTRA HD SMART 58UF8300", "TV LED 55\" FULL HD >>> SMART >>> >> 3D >>> >> > >>>>> KDL-55W805C", >>> >> > >>>>> "TV LED 49\" ULTRA HD 4K XBR-49X835C", "TV LED 55\" ULTRA HD >>> 4K >>> >> > >>>>> XBR-55X855C", >>> >> > >>>>> "TV LED ULTRA DELGADO 55\" ULTRA HD 4K XBR-65X905C", "TV LED >>> 75\" >>> >> > >>> ULTRA HD >>> >> > >>>>> 4K 3D XBR-75X945C", >>> >> > >>>>> "TV LED ULTRA DELGADO 55\" ULTRA HD 4K XBR-55X905C", "SMART TV >>> >> LED 60'' >>> >> > >>>>> ULTRA HD 4K LC60UE30U", >>> >> > >>>>> "SMART TV LED 70'' ULTRA HD 4K LC70UE30U", "SMART TV LED 80'' >>> >> ULTRA HD >>> >> > >>> 4K >>> >> > >>>>> LC80UE30U", >>> >> > >>>>> "SMART TV LED FULL HD 48'' 48J5500", "SMART TV CURVO 79UG8800 >>> 79\" >>> >> > >>> ULTRA HD >>> >> > >>>>> 4K 3D", >>> >> > >>>>> "SMART TV 65UF9500 65\" ULTRA HD 4K 3D", "SMART TV 65UF8500 >>> 65\" >>> >> ULTRA >>> >> > >>> HD >>> >> > >>>>> 4K 3D", >>> >> > >>>>> "SMART TV 55UF9500 55\" ULTRA HD 4K 3D", "SMART TV LED HD 32\" >>> >> > >>> 32J4300", >>> >> > >>>>> "TV LED 48\" SMART FULL HD KDL-48R555C - NEGRO", "SMART TV >>> >> 55UG8700 >>> >> > >>> 55\" >>> >> > >>>>> ULTRA HD 4K 3D", >>> >> > >>>>> "SMART TV 60UF8500 60\" ULTRA HD 4K 3D", "SMART TV 55LF6500 >>> 55\" >>> >> FULL >>> >> > >>> HD >>> >> > >>>>> 3D", >>> >> > >>>>> "TV 32LF550B 32\" HD", "TV LED 47\" FULL HD 47LB5610", "TV LED >>> >> FULL HD >>> >> > >>> 50'' >>> >> > >>>>> TC-50AS600L", >>> >> > >>>>> "TV SMART LED 55\" UHD 3D XBR-55X855B", "TV LED FULL HD 4K >>> >> LC70SQ17U >>> >> > >>> 70''", >>> >> > >>>>> "TV LED SMART UHD 79\" XBR-79X905B", "TV LED FULL HD 40'' >>> >> TC-40A400L", >>> >> > >>>>> "TV LED SMART UHD 70\" XBR-70X855B", "SMART TV UHD 55'' 3D >>> CURVO >>> >> > >>> 55HU8700", >>> >> > >>>>> "TV FULL HD LE40D3142 40\" - NEGRO", "TELEVISOR LED 42\" >>> >> TC-42AS650L", >>> >> > >>>>> "SMART TV LCD FHD 70\" LC70LE660", "TV LED FULL HD 58'' >>> LE58D3140" >>> >> > >>>>> ), pulgadas = c(48L, 40L, 40L, 28L, 40L, 32L, 32L, 55L, 40L, >>> >> > >>>>> 24L, 42L, 50L, 40L, 48L, 50L, 55L, 55L, 55L, 55L, 65L, 65L, >>> 65L, >>> >> > >>>>> 75L, 40L, 42L, 42L, 49L, 49L, 43L, 49L, 49L, 49L, 49L, 55L, >>> 65L, >>> >> > >>>>> 55L, 55L, 50L, 70L, 65L, 60L, 50L, 50L, 40L, 40L, 50L, 32L, >>> 50L, >>> >> > >>>>> 48L, 40L, 32L, 40L, 55L, 40L, 43L, 32L, 49L, 65L, 48L, 40L, >>> 32L, >>> >> > >>>>> 32L, 55L, 32L, 58L, 55L, 49L, 55L, 55L, 75L, 55L, 60L, 70L, >>> 80L, >>> >> > >>>>> 48L, 79L, 65L, 65L, 55L, 32L, 48L, 55L, 60L, 55L, 32L, 47L, >>> 50L, >>> >> > >>>>> 55L, 70L, 79L, 40L, 70L, 55L, 40L, 42L, 70L, 58L), >>> precio.antes >>> >> > >>> c(2799L, >>> >> > >>>>> 1799L, 1699L, 599L, 1299L, 699L, 999L, 1999L, 999L, 499L, >>> 1899L, >>> >> > >>>>> 1799L, 2499L, 3999L, 3699L, 10999L, 4299L, 5499L, 6999L, >>> 14999L, >>> >> > >>>>> 8999L, 9999L, 14599L, 1999L, 2299L, 2299L, 2899L, 2999L, >>> 2299L, >>> >> > >>>>> 23992L, 3599L, 3799L, 4799L, 4999L, 8499L, 5999L, 4999L, >>> 3999L, >>> >> > >>>>> 11999L, 10999L, 4399L, 4499L, 3799L, 1399L, 2299L, 2799L, >>> 999L, >>> >> > >>>>> 2199L, 2299L, 2299L, 1299L, 1699L, 3499L, 1399L, 1549L, 1299L, >>> >> > >>>>> 2399L, 6499L, 2999L, 999L, 1249L, 999L, 14999L, 799L, 5999L, >>> >> > >>>>> 4499L, 4999L, 6499L, 12999L, 24999L, 8999L, 5999L, 7599L, >>> 14999L, >>> >> > >>>>> 2499L, 29999L, 13999L, 9999L, 9699L, 1299L, 2399L, 6999L, >>> 7999L, >>> >> > >>>>> 3699L, 999L, 1899L, 2999L, 7999L, 8499L, 24999L, 1399L, >>> 13999L, >>> >> > >>>>> 8499L, 999L, 2599L, 5799L, 2399L), precio.nuevo = c(2299, >>> 1399, >>> >> > >>>>> 1299, 549, 1099, 629, 799, 1699, 849, 439, 1499, 1549, 1759.2, >>> >> > >>>>> 2099.3, 2309.3, 7699.3, 2799.3, 3639.3, 4899.3, 10499.3, >>> 5109.3, >>> >> > >>>>> 6999.3, 10219.3, 1399, 1599, 1599, 2199, 2199, 1299, 23992, >>> 2299, >>> >> > >>>>> 2299, 2899, 2999, 5999, 3899, 4999, 3999, 8999, 6999, 4099, >>> 3999, >>> >> > >>>>> 3499, 1299, 1799, 2399, 799, 2199, 1799, 1999, 1199, 1599, >>> 2999, >>> >> > >>>>> 1199, 1399, 1099, 1999, 5999, 2799, 999, 1199, 949, 7999, 799, >>> >> > >>>>> 5299, 4299, 3999, 5999, 11999, 23999, 7999, 5699, 7599, 14499, >>> >> > >>>>> 2399, 29999, 11999, 8999, 7499, 1099, 2199, 6599, 7099, 3599, >>> >> > >>>>> 899, 1599, 2199, 4999, 6499, 19999, 1399, 9999, 5999, 999, >>> 2599, >>> >> > >>>>> 5699, 2399), dif.precios = c(500, 400, 400, 50, 200, 70, 200, >>> >> > >>>>> 300, 150, 60, 400, 250, 739.8, 1899.7, 1389.7, 3299.7, 1499.7, >>> >> > >>>>> 1859.7, 2099.7, 4499.7, 3889.7, 2999.7, 4379.7, 600, 700, 700, >>> >> > >>>>> 700, 800, 1000, 0, 1300, 1500, 1900, 2000, 2500, 2100, 0, 0, >>> >> > >>>>> 3000, 4000, 300, 500, 300, 100, 500, 400, 200, 0, 500, 300, >>> 100, >>> >> > >>>>> 100, 500, 200, 150, 200, 400, 500, 200, 0, 50, 50, 7000, 0, >>> 700, >>> >> > >>>>> 200, 1000, 500, 1000, 1000, 1000, 300, 0, 500, 100, 0, 2000, >>> >> > >>>>> 1000, 2200, 200, 200, 400, 900, 100, 100, 300, 800, 3000, >>> 2000, >>> >> > >>>>> 5000, 0, 4000, 2500, 0, 0, 100, 0), dif.porcentual = c(17.86, >>> >> > >>>>> 22.23, 23.54, 8.35, 15.4, 10.01, 20.02, 15.01, 15.02, 12.02, >>> >> > >>>>> 21.06, 13.9, 29.6, 47.5, 37.57, 30, 34.88, 33.82, 30, 30, >>> 43.22, >>> >> > >>>>> 30, 30, 30.02, 30.45, 30.45, 24.15, 26.68, 43.5, 0, 36.12, >>> 39.48, >>> >> > >>>>> 39.59, 40.01, 29.42, 35.01, 0, 0, 25, 36.37, 6.82, 11.11, 7.9, >>> >> > >>>>> 7.15, 21.75, 14.29, 20.02, 0, 21.75, 13.05, 7.7, 5.89, 14.29, >>> >> > >>>>> 14.3, 9.68, 15.4, 16.67, 7.69, 6.67, 0, 4, 5.01, 46.67, 0, >>> 11.67, >>> >> > >>>>> 4.45, 20, 7.69, 7.69, 4, 11.11, 5, 0, 3.33, 4, 0, 14.29, 10, >>> >> > >>>>> 22.68, 15.4, 8.34, 5.72, 11.25, 2.7, 10.01, 15.8, 26.68, 37.5, >>> >> > >>>>> 23.53, 20, 0, 28.57, 29.42, 0, 0, 1.72, 0), rangos >>> c("S/.1500 - >>> >> > >>> S/.2500", >>> >> > >>>>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", >>> >> "S/.500 - >>> >> > >>>>> S/.1500", >>> >> > >>>>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >>> >> > >>>>> "S/.500 - S/.1500", "< S/.500", "S/.500 - S/.1500", "S/.1500 - >>> >> > >>> S/.2500", >>> >> > >>>>> "S/.1500 - S/.2500", "S/.1500 - S/.2500", "S/.1500 - S/.2500", >>> >> > >>>>> "> S/.4,500", "S/.2500 - S/.3500", "S/.3500 - S/.4500", "> >>> >> S/.4,500", >>> >> > >>>>> "> S/.4,500", "> S/.4,500", "> S/.4,500", "> S/.4,500", >>> "S/.500 - >>> >> > >>> S/.1500", >>> >> > >>>>> "S/.1500 - S/.2500", "S/.1500 - S/.2500", "S/.1500 - S/.2500", >>> >> > >>>>> "S/.1500 - S/.2500", "S/.500 - S/.1500", "> S/.4,500", >>> "S/.1500 - >>> >> > >>> S/.2500", >>> >> > >>>>> "S/.1500 - S/.2500", "S/.2500 - S/.3500", "S/.2500 - S/.3500", >>> >> > >>>>> "> S/.4,500", "S/.3500 - S/.4500", "> S/.4,500", "S/.3500 - >>> >> S/.4500", >>> >> > >>>>> "> S/.4,500", "> S/.4,500", "S/.3500 - S/.4500", "S/.3500 - >>> >> S/.4500", >>> >> > >>>>> "S/.2500 - S/.3500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >>> >> > >>>>> "S/.1500 - S/.2500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >>> >> > >>>>> "S/.1500 - S/.2500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >>> >> > >>>>> "S/.1500 - S/.2500", "S/.2500 - S/.3500", "S/.500 - S/.1500", >>> >> > >>>>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >>> >> > >>>>> "> S/.4,500", "S/.2500 - S/.3500", "S/.500 - S/.1500", >>> "S/.500 - >>> >> > >>> S/.1500", >>> >> > >>>>> "S/.500 - S/.1500", "> S/.4,500", "S/.500 - S/.1500", "> >>> >> S/.4,500", >>> >> > >>>>> "S/.3500 - S/.4500", "S/.3500 - S/.4500", "> S/.4,500", "> >>> >> S/.4,500", >>> >> > >>>>> "> S/.4,500", "> S/.4,500", "> S/.4,500", "> S/.4,500", "> >>> >> S/.4,500", >>> >> > >>>>> "S/.1500 - S/.2500", "> S/.4,500", "> S/.4,500", "> S/.4,500", >>> >> > >>>>> "> S/.4,500", "S/.500 - S/.1500", "S/.1500 - S/.2500", "> >>> >> S/.4,500", >>> >> > >>>>> "> S/.4,500", "S/.3500 - S/.4500", "S/.500 - S/.1500", >>> "S/.1500 - >>> >> > >>> S/.2500", >>> >> > >>>>> "S/.1500 - S/.2500", "> S/.4,500", "> S/.4,500", "> S/.4,500", >>> >> > >>>>> "S/.500 - S/.1500", "> S/.4,500", "> S/.4,500", "S/.500 - >>> >> S/.1500", >>> >> > >>>>> "S/.2500 - S/.3500", "> S/.4,500", "S/.1500 - S/.2500")), >>> .Names >>> >> > >>> c("id", >>> >> > >>>>> "marca", "producto", "pulgadas", "precio.antes", >>> "precio.nuevo", >>> >> > >>>>> "dif.precios", "dif.porcentual", "rangos"), class >>> "data.frame", >>> >> > >>> row.names >>> >> > >>>>> = c(NA, >>> >> > >>>>> -97L)) >>> >> > > >>> >> > > ______________________________________________ >>> >> > > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >>> >> > > https://stat.ethz.ch/mailman/listinfo/r-help >>> >> > > PLEASE do read the posting guide >>> >> http://www.R-project.org/posting-guide.html >>> >> > > and provide commented, minimal, self-contained, reproducible code. >>> >> > >>> >> > David Winsemius >>> >> > Alameda, CA, USA >>> >> > >>> >> > >>> >> >>> >> >>> > >>> >>> [[alternative HTML version deleted]] >>> >>> ______________________________________________ >>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >>> https://stat.ethz.ch/mailman/listinfo/r-help >>> PLEASE do read the posting guide >>> http://www.R-project.org/posting-guide.html >>> and provide commented, minimal, self-contained, reproducible code. >> >> >>[[alternative HTML version deleted]]
On Oct 10, 2015, at 10:57 PM, Karim Mezhoud wrote:> My code is not correct. > The idea is to use apply instead of a loop. more efficiency.There is no increased efficiency in using apply. Both `apply` and a `for` loop will perform with equal efficiency. The only advantage is the mental clarity that might result. -- David.> Karim > > On Sun, Oct 11, 2015 at 6:42 AM, Omar Andr? Gonz?les D?az < > oma.gonzales at gmail.com> wrote: > >> Thanks Karim. linio.tv is in the email. In the last part. >> El oct 11, 2015 12:39 AM, "Karim Mezhoud" <kmezhoud at gmail.com> escribi?: >> >>> Hi, >>> omit unlist and test. otherwise you can use apply function. >>> >>> draft: >>> >>> df1 <- apply(linio.tv, 1, function(x) strsplit(x[,idproductio], >>> "[^A-Z0-9-]+")) >>> >>> fct <- function(linio.tv){ >>> >>> if(any(grep("[A-Z][0-9]", linio.tv[,idx_productio]))) { >>> >>> linio.tv[,idx(id)] <- linio.tv[,idx_productio] >>> >>> } >>> >>> else { >>> linio.tv[,idx(id)]<- NA >>> } >>> } >>> >>> df2 <- apply(df1, 1, function(x) fct(x)) >>> >>> I can't test this draft because I have not linio.tv >>> >>> >>> Karim >>> >>> >>> for (i in 1:nrow(linio.tv)) { >>> >>> v <- unlist(strsplit(linio.tv$producto[i], "[^A-Z0-9-]+")) # >>> isolate tokens >>> >>> if(any(grep("[A-Z][0-9]", v))) { >>> >>> linio.tv$id[i] <- v[grep("[A-Z][0-9]", v)] >>> >>> } >>> >>> else { >>> linio.tv$id[i] <- NA >>> } >>> } >>> >>> On Sun, Oct 11, 2015 at 6:07 AM, Omar Andr? Gonz?les D?az < >>> oma.gonzales at gmail.com> wrote: >>> >>>> Hi Boris, >>>> >>>> I've modified a little the for loop to catch the IDs (if there is any) >>>> otherwise to put NAs. This is for another data set. >>>> >>>> >>>> >>>> for (i in 1:nrow(linio.tv)) { >>>> >>>> v <- unlist(strsplit(linio.tv$producto[i], "[^A-Z0-9-]+")) # >>>> isolate tokens >>>> >>>> if(any(grep("[A-Z][0-9]", v))) { >>>> >>>> linio.tv$id[i] <- v[grep("[A-Z][0-9]", v)] >>>> >>>> } >>>> >>>> else { >>>> linio.tv$id[i] <- NA >>>> } >>>> } >>>> >>>> >>>> I get this warning messages, nevertheless the IDs column get the correct >>>> values: >>>> >>>> Warning messages: >>>> 1: In linio.tv$id[i] <- v[grep("[A-Z][0-9]", v)] : >>>> number of items to replace is not a multiple of replacement length >>>> 2: In linio.tv$id[i] <- v[grep("[A-Z][0-9]", v)] : >>>> number of items to replace is not a multiple of replacement length >>>> >>>> >>>> The problem: >>>> >>>> There are entries where the grep part is not specific enough. >>>> >>>> Like this one: "UN50JU6500-NEGRO". It satifies the rule in: >>>> >>>> linio.tv$id[i] <- v[grep("[A-Z][0-9]", v)] , but is not supposed to >>>> take >>>> also: "UN50JU6500-NEGRO" entirely, only this part: "UN50JU6500". >>>> >>>> >>>> I've noticed this rule: the IDs can have at maxium 1 letter after the >>>> "-". >>>> If it contains more than 1, that part should not be considered. >>>> >>>> "TC-L42AS610" >>>> >>>> Also IDs can start with numbers: 1,2, or 3. >>>> >>>> "KDL-40R354B" >>>> >>>> >>>> >>>> >>>> May you clarify to me if it's something that can be done within R? I'm >>>> trying to figure this out, but with any good result. >>>> >>>> I could cleaned with "sub()" (there is only one entry giving me troubles) >>>> but the idea is not to have "technical debt" for the future. >>>> >>>> >>>> >>>> >>>> This is the new data set, I'm talking about: >>>> >>>> >>>> >>>> >>>> >>>> >>>> linio.tv <- structure(list(id = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, >>>> NA, >>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), marca = c("LG", "SAMSUNG", >>>> "SAMSUNG", "SAMSUNG", "LG", "LG", "LG", "LG", "LG", "LG", "LG", >>>> "SAMSUNG", "LG", "LG", "SAMSUNG", "LG", "LG", "LG", "LG", "SAMSUNG", >>>> "LG", "LG", "LG", "SONY", "SAMSUNG", "LG", "LG", "SAMSUNG", "SONY", >>>> "SAMSUNG", "LG", "LG", "LG", "IMACO", "SAMSUNG", "LG", "SAMSUNG", >>>> "SAMSUNG", "LG", "HAIER", "LG", "SONY", "SAMSUNG", "LG", "LG", >>>> "LG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "SONY", "HISENSE", "LG", >>>> "SAMSUNG", "LG", "SAMSUNG", "LG", "SAMSUNG", "SAMSUNG", "CONTINENTAL", >>>> "LG", "IMACO", "AOC", "AOC", "SAMSUNG", "LG", "SONY", "LG", "LG", >>>> "SONY", "SAMSUNG", "SAMSUNG", "PANASONIC", "LG", "SAMSUNG", "NEX", >>>> "IMACO", "LG", "LG", "CONTINENTAL", "SONY", "LG", "LG", "SAMSUNG", >>>> "LG", "LG", "LG", "LG", "LG", "SAMSUNG", "LG", "LG", "SAMSUNG", >>>> "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "AOC", "LG", "LG", >>>> "AOC", "LG", "SAMSUNG", "LG", "SAMSUNG", "SAMSUNG", "LG", "LG", >>>> "SAMSUNG", "SAMSUNG", "SONY", "LG", "SAMSUNG", "SAMSUNG", "LG", >>>> "SAMSUNG", "LG", "SAMSUNG", "LG", "SAMSUNG", "LG", "SAMSUNG", >>>> "SAMSUNG", "SAMSUNG", "SAMSUNG", "LG", "PANASONIC", "PANASONIC", >>>> "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "SONY", >>>> "LG", "LG", "PANASONIC", "AOC", "SAMSUNG", "LG", "SAMSUNG", "LG", >>>> "SAMSUNG", "LG", "LG", "LG", "PANASONIC", "PANASONIC", "LG", >>>> "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", >>>> "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "LG", "SAMSUNG", >>>> "LG", "LG", "SAMSUNG", "LG"), producto = c("COMBO SMART - LG TV LED 4K >>>> ULTRA HD 43'' - 43UF6750 + GOO...", >>>> "SAMSUNG TV LED SMART HD 32'' UN32J4300 - NEGRO", "SAMSUNG TV LED 3D >>>> SMART >>>> FULL HD 48'' - 48J6400", >>>> "SAMSUNG TV LED 3D SMART FULL HD 55'' - 55J6400", "LG TV SMART LED HD >>>> 32\" >>>> 32LF585B - BLANCO", >>>> "LG TV SLIM ULTRA HD 3D WEBOS 2.0 49'' 49UF8500 - PLATEADO", >>>> "LG TV SMART WEBOS 2.0 FULL HD 43\" 43LF5900 -NEGRO", "LG TV LED HD 32\" >>>> - >>>> 32LF550B", >>>> "LG TV LED SMART FULL HD 43'' 43LF6350 - NEGRO", "LG TV LED SMART HD >>>> 32\" >>>> - 32LF585B", >>>> "LG GAME TV LED FULL HD 49\" - 49LF5410", "SAMSUNG TV LED FULL HD 60'' - >>>> UN60FH6003", >>>> "LG TV SMART WEBOS 2.0 FULL HD 49\" - 49LF6350", "LG TV LED FULL HD >>>> 43'' - >>>> 43LF5410", >>>> "SAMSUNG TV SMART FULL HD CURVO 40'' TIZEN - UN40J6500", "LG TV SMART >>>> WEBOS 2.0 ULTRA HD 4K 43\" - 43UF6400", >>>> "LG TV SLIM LED CINEMA 3D FULL HD 42'' 42LB6200 INCLUYE 02...", >>>> "LG GAMETV LED FULL HD 43\" - 43LF5400", "LG GAME TV LED FULL HD 49\" - >>>> 49LF5410", >>>> "TELEVISOR SAMSUNG UN40J5500 SMART TV LED FULL HD 40''-PLA...", >>>> "LG SMART 4K ULTRA HD 55\" - 55UB8200", "LG -TV LED SMART WEBOS 2.0 FULL >>>> HD 55\" - 55LF6350", >>>> "LG - GAME TV LED FULL HD 43'' - 43LF5410", "SONY - TV LED SMART HD >>>> 32'' - >>>> 32R505C", >>>> "SAMSUNG TV LED 3D SMART FULL HD 40'' - UN40H6400", "LG SMART TV 32\" HD >>>> WEBOS 2.0 32LF595B", >>>> "LG - TV LED WEBOS 3D SMART ULTRA HD CURVO 55'' 55UG8700 ...", >>>> "SAMSUNG TV LED FULL HD 40\" UN40JH5005 - NEGRO", "SONY TV LED FULL HD >>>> 40'' >>>> - KDL-40R354B", >>>> "SAMSUNG TV LED SMART FULL HD 40'' TIZEN UN40J5500 - PLATEADO", >>>> "LG TV LED FULL HD 42'' ULTRA SLIM 42LY340C - NEGRO", "LG TV SMART LED >>>> FULL >>>> HD 43\" - 43LF6350", >>>> "LG TV LED CURVO 55\" SMART ULTRA HD 4K CINEMA 3D - 55UC9700", >>>> "IMACO - TV LED HD 24?? - LED24HD", "TELEVISOR SAMSUNG UN32J4300 SMART TV >>>> LED HD 32''-NEGRO", >>>> "LG TV 3D SMART LED ULTRA HD 65\" - 65UF8500", "SAMSUNG - TV LED SMART 3D >>>> 65\" FULL HD SERIE 8 INTERACTIVO...", >>>> "SAMSUNG - TV LED HD 32\" 32JH4005 - NEGRO", "LG TV 55\" SMART ULTRA HD >>>> 4K >>>> CINEMA 3D 55UB8500", >>>> "HAIER TV LED HD LIVE GREEN 24'' - 24B8000", "LG TV LED FULL HD 47'' - >>>> 47LB5610", >>>> "SONY TV LED FULL HD 32'' - KDL-32R304B", "SAMSUNG TV LED SERIE 5 FULL HD >>>> 39? - 39FH5005", >>>> "LG - TV SAMT SLIM ULTRA HD 4K WEBOS 2.0 55'' 55UF7700 - P...", >>>> "LG TV LED CURVO 55\" SMART ULTRA HD 4K CINEMA 3D - 55UC9700", >>>> "LG TV MONITOR LED HD 23.6? - 24MT47A", "SAMSUNG - MONITOR LED 32\" >>>> MD32C - >>>> NEGRO", >>>> "TELEVISOR SAMSUNG UN40J6400 SMART TV LED 3D FULL HD 40''-...", >>>> "SAMSUNG LED SMART FULL HD 48'' - UN48J6500", "SONY - TV LED SMART FULL >>>> HD >>>> 40'' - 40R555C", >>>> "TELEVISOR HISENSE LED 40\" 40K221W SMART TV LED FULL HD", "LG TV MONITOR >>>> LED HD 23.6? - 24MT47A", >>>> "TELEVISOR SAMSUNG UN48J6400 SMART TV LED 3D FULL HD 48''-...", >>>> "LG 49UB8500 LED 49\" SMART 3D 4K", "SAMSUNG TV LED 3D SMART FULL HD 40'' >>>> TIZEN UN40J6400 - NEGRO", >>>> "LG TV LED FULL HD 42\" - 42LY340C", "SAMSUNG TV LED HD 32'' UN32J4000 - >>>> NEGRO", >>>> "TELEVISOR SAMSUNG UN48J5500 SMART TV LED FULL HD 48''-PLA...", >>>> "CONTINENTAL - TV LED 15.6\" CELED95935, INCLUYE RACK", "LG TV LED 4K >>>> ULTRA >>>> HD 43\" - 43UF6750", >>>> "IMACO - TV LED HD 16?? - LED16HD", "AOC - TELEVISOR HD 32\" LE32W454F- >>>> NEGRO", >>>> "AOC TV LED HD 20\" - LE20A1140", "SAMSUNG TV LED HD 32'' - UN32J4000", >>>> "LG - TV MONITOR 27.5? - 28MT47B", "SONY TV LED FULL HD 40'' - >>>> KDL-40R354B", >>>> "LG TV MONITOR LED HD 23.6? - 24MT47A", "LG GAME TV LED FULL HD 49\" - >>>> 49LF5410", >>>> "SONY TV LED FULL HD 40'' - KDL-40R354B", "SAMSUNG - UN48J6400 LED FULL >>>> HD >>>> 48\"SMART TIZEN 3D 2015 - ...", >>>> "SAMSUNG - MONITOR FULL HD 40\" MD40C - NEGRO", "PANASONIC LED SMART FULL >>>> HD 50\" - TC-50AS600", >>>> "LG - 43LF5410 LED 43\" FULL HD GAME - SILVER", "SAMSUNG - TELEVISOR LED >>>> HD 32\" UN32JH4005 - NEGRO", >>>> "NEX TV LED SMART HD 32\" USB WIFI INCORPORADO - LED3208SMR", >>>> "IMACO - TV LED HD 19?? - LED19HD", "LG -TV LED HG 32\" - 32LF550B", >>>> "LG - TELEVISOR LED 32\" HD 32LF550B", "CONTINENTAL - TV LED 19\" >>>> CELED99935, INCLUYE RACK", >>>> "SONY TV LED FULL HD 40'' - KDL-40R354B", "LG - TELEVISOR LED 32\" HD >>>> SMART >>>> TV 32LF585B - BLANCO", >>>> "MONITOR TV LG 24MT47A LED HD 23.6?-PLATEADO", "TELEVISOR SAMSUNG >>>> UN32J4300 >>>> SMART TV LED HD 32''-NEGRO", >>>> "LG GAME TV LED FULL HD 49\" - 49LF5400", "LG - TELEVISOR LED 32\" HD >>>> SMART >>>> TV 32LF585B ? BLANCO", >>>> "LG - TELEVISOR LED 32\" HD 32LF550B", "LG TV LED HD 32'' - 32LF550B", >>>> "LG TV LED SMART HD 32'' - 32LF585B", "SAMSUNG - TELEVISOR LED FULL HD >>>> 40\" >>>> UN40JH5005 ? NEGRO", >>>> "LG LED FULL HD SMART TV 42''42LF5850 - PLATEADO", "LG TV LED WEBOS 3D >>>> SMART ULTRA HD 49'' - 49UF8500", >>>> "SAMSUNG - TV LED SMART FULL HD 40? UN40H5500 - NEGRO", "SAMSUNG TV LED >>>> SMART HD 32'' UN32J4300 - NEGRO", >>>> "SAMSUNG TV LED ALTA DEFINICI?N DTV USB 32\" - 32JH4005", "SAMSUNG - >>>> TELEVISOR LED FULL HD 40\" UN40JH5005 - NEGRO", >>>> "SAMSUNG TV LED SMART TIZEN 3D QUADCORE40\" - UN40J6400", "AOC TV LED HD >>>> 32\" - LE32W454F +RACK FIJO", >>>> "LG TV LED FULL HD 43'' - 43LF5410", "LG - TV LED WEBOS 3D SMART FULL HD >>>> 55'' - 55LF6500", >>>> "AOC 32\" LE32W454F HD DIGITAL LED TV + HOME THEATRE F1200U", >>>> "LG TV LED WEBOS 3D SMART ULTRA HD 49'' - 49UF8500", "SAMSUNG TV LED ALTA >>>> DEFINICI?N DTV USB 32\" - 32JH4005", >>>> "LG - 42LF6400 LED FULL HD 42'' SMART WEBOS 3D - SILVER", "TELEVISOR >>>> SAMSUNG UN48J5300 SMART TV LED FULL HD 48''-NEGRO", >>>> "SAMSUNG UN40JH5005 LED FULL HD 40\" - NEGRO GLOSS", "LG - 24MT47A + >>>> MONITOR TV 24\" PUERTOS HDMI, USB, AV - NEG...", >>>> "LG TV LED SMART 4K ULTRA HD 55\" - 55UB8200", "SAMSUNG - 55J6400 LED >>>> 55\" >>>> SMART TIZEN 3D - BLACK", >>>> "SAMSUNG TV CURVED SMART ULTRA HD 48'' TIZEN UN48JU6700 - ...", >>>> "TELEVISI?N SONY KDL-32R505C LED 32\"-NEGRO", "LG TV LED CINEMA 3D 4K >>>> SMART >>>> ULTRA HD 49'' + 02 LENTES 3D...", >>>> "SAMSUNG - 55J6400 LED 55\" SMART TIZEN 3D - BLACK", "SAMSUNG - 40J5500 >>>> LED >>>> 40\" SMART QUADCORE / BLUETOOTH* - S...", >>>> "LG TV LED WEBOS 3D SMART ULTRA HD 49'' - 49UF8500", "SAMSUNG TV LED >>>> SMART >>>> FULL HD 40'' TIZEN UN40J5500 - PLATEADO", >>>> "LG - TELEVISOR LED 42\" FULL HD SMART TV 42LF5850 ? PLAT...", >>>> "TELEVISI?N SAMSUNG UN48J5500 LED SMART TV 48\"-PLATEADO", "LG - >>>> TELEVISOR >>>> LED 42\" FULL HD SMART TV 42LF5850 - PLATEADO", >>>> "TELEVISOR SAMSUNG UN55JU6700 LED UHD 4K SMART 55'' - PLA...", >>>> "LG - TV LED WEBOS 3D SMART SUPER ULTRA HD 55'' - 55UF9500", >>>> "TELEVISOR SAMSUNG UN50JU6500 UHD 4K SMART 50'' - PLATEADO", >>>> "SAMSUNG - TELEVISOR LED HD 40\" SMART UN40J5500 - NEGRO", "TELEVISOR >>>> SAMSUNG UN48J6500 CURVO FULL HD SMART 48'' - P...", >>>> "SAMSUNG - TELEVISOR LED HD 32\" SMART UN32J4300 - NEGRO", "LG TV LED >>>> CINEMA 3D 4K SMART ULTRA HD 55'' 55UB8500 - NEGRO", >>>> "TELEVISI?N PANASONIC TC-L40SV7L LED FULL-HD 40''-NEGRO", "PANASONIC TV >>>> LED >>>> 42?? FULL HD TC-L42E6L - NEGRO.", >>>> "TELEVISOR SAMSUNG UN 40JH5005 LED FULL HD", "SAMSUNG - TV LED SMART >>>> CURVO >>>> 3D ULTRA HD 65? UN65HU9000...", >>>> "SAMSUNG - UN48J5300 LED FULL HD SMART 2015 - BLACK", "SAMSUNG TV LED >>>> SMART >>>> FULL HD 50'' TIZEN UN50J5500 - PLATEADO", >>>> "SAMSUNG - TV SMART 3D FULL HD 60? UN60H7100 - NEGRO", "SONY - TELEVISOR >>>> LED SMART TV FULL HD 40'' KDL-40R555C - ...", >>>> "LG TV 47\" LED FULL HD - 47LY340C", "LG TV UHD 4K 65UB9800 SMART 3D LED >>>> TV >>>> C/WEBOS 65' LENTES 3D", >>>> "PANASONIC - TELEVISOR TC-L42AS610 LED SMART FULL HD 42?...", >>>> "AOC - TELEVISOR LED 32\" - LE32W454F", "SAMSUNG TV LED 32? - >>>> UN32FH4005G", >>>> "LG TV SMART LED FULL HD 42\" - 42LF5850", "SAMSUNG TV LED 3D SMART FULL >>>> HD >>>> 40'' TIZEN UN40J6400 - NEGRO", >>>> "LG TV SMART LED FULL HD 42\" - 42LF5850", "SAMSUNG TV LED HD 32'' >>>> UN32JH4005 - NEGRO", >>>> "LG TV PLASMA 2014 60\" FULL HD 1080P - 60PB5600", "LG TV LED CINEMA 3D >>>> SMART FULL HD 55'' 55LB7050 - PLATEADO", >>>> "LG TV LED SMART FULL HD 43'' 43LF6350 - NEGRO", "PANASONIC PUERTO USB >>>> LED >>>> 40\" - TC-L40SV7L", >>>> "PANASONIC LED SMART FULL HD 42\" - TC-L42AS610", "LG TV SMART LED FULL >>>> HD >>>> 49\" - 49LF6350", >>>> "SAMSUNG TV LED SMART ULTRA HD 50'' TIZEN UN50JU6500-NEGRO", >>>> "SAMSUNG TV LED SMART ULTRA HD 50'' TIZEN UN50JU6500 - NEGRO", >>>> "SAMSUNG TV SMART FULL HD CURVO 48'' TIZEN UN48J6500", "SAMSUNG TV SMART >>>> ULTRA HD 4K 65'' - UN65JU6500", >>>> "SAMSUNG UN48J5500 LED 48\" - PLATEADO", "SAMSUNG LED 32\" CONEXI?N WIFI >>>> - >>>> UN32J4300", >>>> "SAMSUNG LED SMART 40'' CONEXI?N WI-FI DIRECT - UN40J5500", "SAMSUNG LED >>>> SMART ULTRA HD 55\" - TVUN55JU6700", >>>> "SAMSUNG TV CURVED 3D SMART ULTRA HD 65'' TIZEN UN65JU7500...", >>>> "SAMSUNG TELEVISOR HG32NB460GF, 32\" LED, HD, 1366 X 768", "LG -TV SMART >>>> LED FULL HD 55\" - 55LF6350", >>>> "SAMSUNG TV LED SMART 3D 48\" - UN48H6400", "LG LED ULTRAHD 4K 49\" SMART >>>> 3D - 49UB8300", >>>> "LG - TV LED SMART HD 32'' 32LF585B - PLATEADO", "SAMSUNG - TV LED FULL >>>> HD >>>> 40\" UN40JH5005 - NEGRO GLOSS", >>>> "LG - TV LED FULL HD 43'' 43LF5410 - PLATEADO"), precio.antes = c(2599L, >>>> 1299L, 2899L, 3999L, 1199L, 4499L, 1999L, 1099L, 2299L, 1299L, >>>> 2499L, 3999L, 2199L, 1899L, 2299L, 2299L, 1799L, 1499L, 2299L, >>>> 1999L, 3999L, 3499L, 1549L, 1299L, 2299L, 2299L, 6999L, 1499L, >>>> 1499L, 1899L, 1499L, 2099L, 6999L, 599L, 1299L, 9999L, 8999L, >>>> 999L, 5999L, 599L, 2299L, 1299L, 1499L, 4999L, 6999L, 899L, 2299L, >>>> 2499L, 3299L, 1799L, 1399L, 899L, 2499L, 4199L, 2299L, 1499L, >>>> 1099L, 2499L, 399L, 2499L, 399L, 999L, 599L, 999L, 899L, 1499L, >>>> 699L, 2299L, 1399L, 2499L, 2999L, 2499L, 1599L, 1149L, 999L, >>>> 499L, 1089L, 1099L, 499L, 1499L, 1399L, 799L, 1299L, 2499L, 1399L, >>>> 1259L, 1299L, 1299L, 1599L, 1999L, 3999L, 1999L, 1199L, 999L, >>>> 1599L, 2299L, 999L, 1499L, 3699L, 1199L, 3899L, 1099L, 2299L, >>>> 2499L, 1399L, 729L, 4199L, 3599L, 4999L, 1399L, 3999L, 4999L, >>>> 2199L, 4499L, 2299L, 1699L, 2779L, 1699L, 5799L, 8999L, 3699L, >>>> 2099L, 3299L, 1299L, 5900L, 1799L, 1799L, 1399L, 14999L, 2499L, >>>> 2799L, 6299L, 1799L, 2417L, 9500L, 1799L, 799L, 999L, 1999L, >>>> 2499L, 1899L, 999L, 2299L, 3699L, 2199L, 1699L, 1999L, 2499L, >>>> 3499L, 3899L, 2999L, 7999L, 2299L, 1299L, 2099L, 5799L, 9999L, >>>> 1110L, 3399L, 2799L, 3899L, 1299L, 1399L, 1499L), precio.nuevo = c(1799L, >>>> 999L, 2299L, 3299L, 999L, 3199L, 1499L, 849L, 1399L, 979L, 1795L, >>>> 2999L, 1899L, 1299L, 1699L, 1599L, 1499L, 1299L, 1699L, 1449L, >>>> 3699L, 2499L, 1199L, 999L, 1499L, 899L, 4999L, 1199L, 1199L, >>>> 1389L, 1299L, 1699L, 4899L, 549L, 999L, 7499L, 6700L, 849L, 4299L, >>>> 549L, 1499L, 899L, 1299L, 3599L, 5354L, 538L, 1959L, 1599L, 2999L, >>>> 1367L, 1099L, 589L, 2449L, 3199L, 1529L, 1229L, 839L, 1779L, >>>> 329L, 1799L, 389L, 719L, 489L, 849L, 799L, 1185L, 599L, 1609L, >>>> 1299L, 2179L, 2839L, 1999L, 1599L, 899L, 799L, 449L, 880L, 899L, >>>> 429L, 1275L, 1199L, 589L, 999L, 1749L, 1199L, 1099L, 899L, 989L, >>>> 1399L, 1999L, 2999L, 1599L, 999L, 819L, 1299L, 2299L, 789L, 1299L, >>>> 3199L, 977L, 3089L, 849L, 1719L, 1799L, 1399L, 569L, 3979L, 3299L, >>>> 3369L, 1093L, 3389L, 3289L, 1419L, 3429L, 1405L, 1499L, 1899L, >>>> 1499L, 5199L, 6999L, 3199L, 1599L, 2999L, 1099L, 5089L, 1459L, >>>> 1499L, 1289L, 12999L, 1739L, 2255L, 5879L, 1499L, 1929L, 8499L, >>>> 1649L, 799L, 899L, 1659L, 1749L, 1609L, 831L, 2089L, 3659L, 1769L, >>>> 1499L, 1599L, 2176L, 2749L, 2889L, 2899L, 5599L, 1899L, 1099L, >>>> 1899L, 5199L, 8589L, 990L, 3169L, 2199L, 3899L, 949L, 1099L, >>>> 1199L), dif.precios = c(800L, 300L, 600L, 700L, 200L, 1300L, >>>> 500L, 250L, 900L, 320L, 704L, 1000L, 300L, 600L, 600L, 700L, >>>> 300L, 200L, 600L, 550L, 300L, 1000L, 350L, 300L, 800L, 1400L, >>>> 2000L, 300L, 300L, 510L, 200L, 400L, 2100L, 50L, 300L, 2500L, >>>> 2299L, 150L, 1700L, 50L, 800L, 400L, 200L, 1400L, 1645L, 361L, >>>> 340L, 900L, 300L, 432L, 300L, 310L, 50L, 1000L, 770L, 270L, 260L, >>>> 720L, 70L, 700L, 10L, 280L, 110L, 150L, 100L, 314L, 100L, 690L, >>>> 100L, 320L, 160L, 500L, 0L, 250L, 200L, 50L, 209L, 200L, 70L, >>>> 224L, 200L, 210L, 300L, 750L, 200L, 160L, 400L, 310L, 200L, 0L, >>>> 1000L, 400L, 200L, 180L, 300L, 0L, 210L, 200L, 500L, 222L, 810L, >>>> 250L, 580L, 700L, 0L, 160L, 220L, 300L, 1630L, 306L, 610L, 1710L, >>>> 780L, 1070L, 894L, 200L, 880L, 200L, 600L, 2000L, 500L, 500L, >>>> 300L, 200L, 811L, 340L, 300L, 110L, 2000L, 760L, 544L, 420L, >>>> 300L, 488L, 1001L, 150L, 0L, 100L, 340L, 750L, 290L, 168L, 210L, >>>> 40L, 430L, 200L, 400L, 323L, 750L, 1010L, 100L, 2400L, 400L, >>>> 200L, 200L, 600L, 1410L, 120L, 230L, 600L, 0L, 350L, 300L, 300L >>>> ), dif.porcentual = c(30.78, 23.09, 20.7, 17.5, 16.68, 28.9, >>>> 25.01, 22.75, 39.15, 24.63, 28.17, 25.01, 13.64, 31.6, 26.1, >>>> 30.45, 16.68, 13.34, 26.1, 27.51, 7.5, 28.58, 22.6, 23.09, 34.8, >>>> 60.9, 28.58, 20.01, 20.01, 26.86, 13.34, 19.06, 30, 8.35, 23.09, >>>> 25, 25.55, 15.02, 28.34, 8.35, 34.8, 30.79, 13.34, 28.01, 23.5, >>>> 40.16, 14.79, 36.01, 9.09, 24.01, 21.44, 34.48, 2, 23.82, 33.49, >>>> 18.01, 23.66, 28.81, 17.54, 28.01, 2.51, 28.03, 18.36, 15.02, >>>> 11.12, 20.95, 14.31, 30.01, 7.15, 12.81, 5.34, 20.01, 0, 21.76, >>>> 20.02, 10.02, 19.19, 18.2, 14.03, 14.94, 14.3, 26.28, 23.09, >>>> 30.01, 14.3, 12.71, 30.79, 23.86, 12.51, 0, 25.01, 20.01, 16.68, >>>> 18.02, 18.76, 0, 21.02, 13.34, 13.52, 18.52, 20.77, 22.75, 25.23, >>>> 28.01, 0, 21.95, 5.24, 8.34, 32.61, 21.87, 15.25, 34.21, 35.47, >>>> 23.78, 38.89, 11.77, 31.67, 11.77, 10.35, 22.22, 13.52, 23.82, >>>> 9.09, 15.4, 13.75, 18.9, 16.68, 7.86, 13.33, 30.41, 19.44, 6.67, >>>> 16.68, 20.19, 10.54, 8.34, 0, 10.01, 17.01, 30.01, 15.27, 16.82, >>>> 9.13, 1.08, 19.55, 11.77, 20.01, 12.93, 21.43, 25.9, 3.33, 30, >>>> 17.4, 15.4, 9.53, 10.35, 14.1, 10.81, 6.77, 21.44, 0, 26.94, >>>> 21.44, 20.01), pulgadas = c("43", "32", "48", "55", "32", "49", >>>> "43", "32", "43", "32", "49", "60", "49", "43", "40", "43", "42", >>>> "43", "49", "40", "55", "55", "43", "32", "40", "32", "55", "40", >>>> "40", "40", "42", "43", "55", "24", "32", "65", "65", "32", "55", >>>> "24", "47", "32", "39", "55", "55", "6", "32", "40", "48", "40", >>>> "40", "6", "48", "49", "40", "42", "32", "48", "6", "43", "16", >>>> "32", "20", "32", "5", "40", "6", "49", "40", "48", "40", "50", >>>> "43", "32", "32", "19", "32", "32", "19", "40", "32", "6", "32", >>>> "49", "32", "32", "32", "32", "40", "42", "49", "40", "32", "32", >>>> "40", "40", "32", "43", "55", "32", "49", "32", "42", "48", "40", >>>> "24", "55", "55", "48", "32", "49", "55", "40", "49", "40", "42", >>>> "48", "42", "55", "55", "50", "40", "48", "32", "55", "40", "42", >>>> "NA", "65", "NA", "50", "60", "40", "47", "65", "42", "32", "32", >>>> "42", "40", "42", "32", "60", "55", "43", "40", "42", "49", "50", >>>> "50", "48", "65", "48", "32", "40", "55", "65", "32", "55", "48", >>>> "49", "32", "40", "43"), rangos = c("S/.1500 - S/.2500", "S/.500 - >>>> S/.1500", >>>> "S/.1500 - S/.2500", "S/.2500 - S/.3500", "S/.500 - S/.1500", >>>> "S/.2500 - S/.3500", "S/.500 - S/.1500", "S/.500 - S/.1500", >>>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >>>> "S/.2500 - S/.3500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >>>> "S/.1500 - S/.2500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >>>> "S/.500 - S/.1500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >>>> "S/.3500 - S/.4500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >>>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", "> S/.4,500", >>>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - >>>> S/.1500", >>>> "S/.1500 - S/.2500", "> S/.4,500", "S/.500 - S/.1500", "S/.500 - >>>> S/.1500", >>>> "> S/.4,500", "> S/.4,500", "S/.500 - S/.1500", "S/.3500 - S/.4500", >>>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - >>>> S/.1500", >>>> "S/.3500 - S/.4500", "> S/.4,500", "S/.500 - S/.1500", "S/.1500 - >>>> S/.2500", >>>> "S/.1500 - S/.2500", "S/.2500 - S/.3500", "S/.500 - S/.1500", >>>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >>>> "S/.2500 - S/.3500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >>>> "S/.500 - S/.1500", "S/.1500 - S/.2500", "< S/.500", "S/.1500 - S/.2500", >>>> "< S/.500", "S/.500 - S/.1500", "< S/.500", "S/.500 - S/.1500", >>>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - >>>> S/.2500", >>>> "S/.500 - S/.1500", "S/.1500 - S/.2500", "S/.2500 - S/.3500", >>>> "S/.1500 - S/.2500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >>>> "S/.500 - S/.1500", "< S/.500", "S/.500 - S/.1500", "S/.500 - S/.1500", >>>> "< S/.500", "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", >>>> "S/.500 - S/.1500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >>>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - >>>> S/.1500", >>>> "S/.1500 - S/.2500", "S/.2500 - S/.3500", "S/.1500 - S/.2500", >>>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - >>>> S/.2500", >>>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.2500 - S/.3500", >>>> "S/.500 - S/.1500", "S/.2500 - S/.3500", "S/.500 - S/.1500", >>>> "S/.1500 - S/.2500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >>>> "S/.500 - S/.1500", "S/.3500 - S/.4500", "S/.2500 - S/.3500", >>>> "S/.2500 - S/.3500", "S/.500 - S/.1500", "S/.2500 - S/.3500", >>>> "S/.2500 - S/.3500", "S/.500 - S/.1500", "S/.2500 - S/.3500", >>>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >>>> "S/.500 - S/.1500", "> S/.4,500", "> S/.4,500", "S/.2500 - S/.3500", >>>> "S/.1500 - S/.2500", "S/.2500 - S/.3500", "S/.500 - S/.1500", >>>> "> S/.4,500", "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", >>>> "> S/.4,500", "S/.1500 - S/.2500", "S/.1500 - S/.2500", "> S/.4,500", >>>> "S/.500 - S/.1500", "S/.1500 - S/.2500", "> S/.4,500", "S/.1500 - >>>> S/.2500", >>>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >>>> "S/.1500 - S/.2500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >>>> "S/.1500 - S/.2500", "S/.3500 - S/.4500", "S/.1500 - S/.2500", >>>> "S/.500 - S/.1500", "S/.1500 - S/.2500", "S/.1500 - S/.2500", >>>> "S/.2500 - S/.3500", "S/.2500 - S/.3500", "S/.2500 - S/.3500", >>>> "> S/.4,500", "S/.1500 - S/.2500", "S/.500 - S/.1500", "S/.1500 - >>>> S/.2500", >>>> "> S/.4,500", "> S/.4,500", "S/.500 - S/.1500", "S/.2500 - S/.3500", >>>> "S/.1500 - S/.2500", "S/.3500 - S/.4500", "S/.500 - S/.1500", >>>> "S/.500 - S/.1500", "S/.500 - S/.1500")), .Names = c("id", "marca", >>>> "producto", "precio.antes", "precio.nuevo", "dif.precios", >>>> "dif.porcentual", >>>> "pulgadas", "rangos"), class = "data.frame", row.names = c(NA, >>>> -164L)) >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> 2015-10-10 11:55 GMT-05:00 Omar Andr? Gonz?les D?az < >>>> oma.gonzales at gmail.com> >>>> : >>>> >>>>> Thank you very much to both of you. This information is very >>>> enlightening >>>>> to me. >>>>> >>>>> Cheers. >>>>> >>>>> >>>>> 2015-10-10 1:11 GMT-05:00 Boris Steipe <boris.steipe at utoronto.ca>: >>>>> >>>>>> David answered most of this. Just a two short notes inline. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Oct 10, 2015, at 12:38 AM, Omar Andr? Gonz?les D?az < >>>>>> oma.gonzales at gmail.com> wrote: >>>>>> >>>>>>> David, Boris, so thankfull for your help. Both approaches are very >>>>>> good. I got this solve with David's help. >>>>>>> >>>>>>> I find very insteresting Bori's for loop. And I need a little help >>>>>> understanding the regex part on it. >>>>>>> >>>>>>> - The strsplit function: strsplit(ripley.tv$producto[i], >>>> "[^A-Z0-9-]+") >>>>>>> >>>>>>> I understand for this: split every row by a sequence of any number >>>> or >>>>>> letter or "-" that appears at leat once (+ operator). >>>>>>> >>>>>>> 1.- What does mena the "^" symbol? If you remove it, just appeare >>>>>> blanks. >>>>>>> 2.- Why is there the necessity of "+" after the closing "]"? >>>>>>> >>>>>>> 3.- How this: ripley.tv$id[i] <- v[grep("[A-Z][0-9]", v)] >>>>>>> Identifies also the IDs where "-" is present. Here the regex >>>> does >>>>>> not have the "-" included. >>>>>> >>>>>> Yes. I am not matching the entire token here. Note there is no "+": >>>> The >>>>>> two character-class expressions match exactly one uppercase character >>>>>> adjacent to exactly one number. If this is found in a token, grep >>>> returns >>>>>> TRUE. It doesn't matter what else the token contains - the first regex >>>>>> already took care of removing everything that's not needed. The >>>> vector of >>>>>> FALSEs and a single TRUE that grep() returns goes inside the square >>>>>> brackets, and selects the token from v. >>>>>> >>>>>> >>>>>> >>>>>>> Also, I notice that David used the "-" at the begining of the >>>> matching: >>>>>> [-A-Z0-9], without the "^" (stars with) at the beginning. >>>>>> >>>>>> This can be very confusing about regular expressions: the same >>>> character >>>>>> can mean different things depending on where it is found. Between two >>>>>> characters in a character class expresssion, the hyphen means "range". >>>>>> Elsewhere it is a literal hyphen. David put his at the beginning, I >>>> had it >>>>>> at the end (in the first regex). Another tricky character is "?" >>>> which can >>>>>> mean 0,1 matches, or turn "greedy" matching off... >>>>>> >>>>>> Online regex testers are invaluable to develop a regex - one I >>>> frequently >>>>>> use is regexpal.com >>>>>> >>>>>> Cheers, >>>>>> B. >>>>>> >>>>>> >>>>>>> >>>>>>> I would appreciate a response from you, gentlemen. >>>>>>> >>>>>>> Thanks again. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> 2015-10-09 18:32 GMT-05:00 David Winsemius <dwinsemius at comcast.net >>>>> : >>>>>>> >>>>>>> On Oct 9, 2015, at 4:21 PM, Boris Steipe wrote: >>>>>>> >>>>>>>> I think you are going into the wrong direction here and this is a >>>>>> classical example of what we mean by "technical debt" of code. Rather >>>> than >>>>>> tell to your regular expression what you are looking for, you are >>>> handling >>>>>> special cases with redundant code. This is ugly, brittle and >>>> impossible to >>>>>> maintain. >>>>>>>> >>>>>>>> Respect to you that you have recognized this. >>>>>>>> >>>>>>>> >>>>>>>> The solution is rather simple: >>>>>>>> >>>>>>>> A) Isolate tokens. Your IDs contain only a limited set of >>>> characters. >>>>>> Split your strings along the characters that are not found in IDs to >>>>>> isolate candidate tokens, place them into a vector. >>>>>>>> >>>>>>>> B) Evaluate your tokens: as far as I can see IDs all contain >>>> letters >>>>>> AND numbers. This is a unique characteristic. Thus it is sufficient >>>> to grep >>>>>> for a letter/number pair in a token to identify it as an ID. >>>>>>>> >>>>>>>> Should you ever find a need to accommodate differently formed IDs, >>>>>> there are only two, well defined places with clearly delegated roles >>>> where >>>>>> changes might be needed. >>>>>>>> >>>>>>>> Here is the code: >>>>>>>> >>>>>>>> for (i in 1:nrow(ripley.tv)) { >>>>>>>> v <- unlist(strsplit(ripley.tv$producto[i], >>>> "[^A-Z0-9-]+")) # >>>>>> isolate tokens >>>>>>>> ripley.tv$id[i] <- v[grep("[A-Z][0-9]", v)] # identify IDs >>>>>> and store >>>>>>>> } >>>>>>> >>>>>>> That logic actually simplifies the regex strategy as well: >>>>>>> >>>>>>> sub("(.*[ \n])([-A-Z0-9]{6,12})(.*)", "\\2", >>>>>>> ripley.tv$producto, >>>>>>> ignore.case = T) >>>>>>> >>>>>>> >>>>>>> Almost succeeds, with a few all-character words, but if you require >>>> one >>>>>> number in the middle you get full results: >>>>>>> >>>>>>> sub("(.*[ \n])([-A-Z0-9]{3,6}[0-9][-A-Z0-9]{2,6})(.*)", "\\2", >>>>>>> ripley.tv$producto, >>>>>>> ignore.case = T) >>>>>>> >>>>>>> [1] "48J6400" "40J5300" "TC-40CS600L" "LE28F6600" >>>>>> "LE40K5000N" >>>>>>> [6] "LE32B7000" "LE32K5000N" "LE55B8000" "LE40B8000" >>>> "LE24B8000" >>>>>>> [11] "TC-42AS610" "LE50K5000N" "40JU6500" "48JU6500" >>>> "50JU6500" >>>>>>> [16] "55JS9000" "55JU6500" "55JU6700" "55JU7500" >>>> "65JS9000" >>>>>>> [21] "65JU6500" "65JU7500" "75JU6500" "40LF6350" >>>> "42LF6400" >>>>>>> [26] "42LF6450" "49LF6450" "LF6400" "43UF6750" >>>> "49UF6750" >>>>>>> [31] "UF6900" "49UF7700" "49UF8500" "55UF7700" >>>> "65UF7700" >>>>>>> [36] "55UF8500" "TC-55CX640W" "TC-50CX640W" "70UF7700" >>>> "UG8700" >>>>>>> [41] "LF6350" "KDL-50FA95C" "KDL50W805C" "KDL-40R354B" >>>> "40J5500" >>>>>>> [46] "50J5500" "32JH4005" "50J5300" "48J5300" >>>> "40J6400" >>>>>>> [51] "KDL-32R505C" "KDL-40R555C" "55J6400" "40JH5005" >>>> "43LF5410" >>>>>>> [56] "32LF585B" "49LF5900" "KDL-65W855C" "UN48J6500" >>>> "LE40F1551" >>>>>>> [61] "TC-32AS600L" "KDL-32R304B" "55EC9300" "LE32W454F" >>>> "58UF8300" >>>>>>> [66] "KDL-55W805C" "XBR-49X835C" "XBR-55X855C" "XBR-65X905C" >>>>>> "XBR-75X945C" >>>>>>> [71] "XBR-55X905C" "LC60UE30U" "LC70UE30U" "LC80UE30U" >>>> "48J5500" >>>>>>> [76] "79UG8800" "65UF9500" "65UF8500" "55UF9500" >>>> "32J4300" >>>>>>> [81] "KDL-48R555C" "55UG8700" "60UF8500" "55LF6500" >>>> "32LF550B" >>>>>>> [86] "47LB5610" "TC-50AS600L" "XBR-55X855B" "LC70SQ17U" >>>>>> "XBR-79X905B" >>>>>>> [91] "TC-40A400L" "XBR-70X855B" "55HU8700" "LE40D3142" >>>>>> "TC-42AS650L" >>>>>>> [96] "LC70LE660" "LE58D3140" >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Cheers, >>>>>>>> Boris >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Oct 9, 2015, at 5:48 PM, Omar Andr? Gonz?les D?az < >>>>>> oma.gonzales at gmail.com> wrote: >>>>>>>> >>>>>>>>>>>> ripley.tv <- structure(list(id = c(NA, NA, NA, NA, NA, NA, >>>> NA, >>>>>> NA, >>>>>>>>>> NA, NA, >>>>>>>>>>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>>> NA, >>>>>>>>>>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>>> NA, >>>>>>>>>>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>>> NA, >>>>>>>>>>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>>> NA, >>>>>>>>>>>> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, >>>> NA, >>>>>>>>>>>> NA, NA, NA, NA, NA, NA, NA), marca = c("SAMSUNG", "SAMSUNG", >>>>>>>>>>>> "PANASONIC", "HAIER", "HAIER", "HAIER", "HAIER", "HAIER", >>>> "HAIER", >>>>>>>>>>>> "HAIER", "PANASONIC", "HAIER", "SAMSUNG", "SAMSUNG", >>>> "SAMSUNG", >>>>>>>>>>>> "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", >>>> "SAMSUNG", >>>>>>>>>>>> "SAMSUNG", "SAMSUNG", "LG", "LG", "LG", "LG", "LG", "LG", >>>> "LG", >>>>>>>>>>>> "LG", "LG", "LG", "LG", "LG", "LG", "PANASONIC", "PANASONIC", >>>>>>>>>>>> "LG", "LG", "LG", "SONY", "SONY", "SONY", "SAMSUNG", >>>> "SAMSUNG", >>>>>>>>>>>> "SAMSUNG", "SAMSUNG", "SAMSUNG", "SAMSUNG", "SONY", "SONY", >>>>>> "SAMSUNG", >>>>>>>>>>>> "SAMSUNG", "LG", "LG", "LG", "SONY", "SAMSUNG", "AOC", >>>>>> "PANASONIC", >>>>>>>>>>>> "SONY", "LG", "AOC", "LG", "SONY", "SONY", "SONY", "SONY", >>>> "SONY", >>>>>>>>>>>> "SONY", "SHARP", "SHARP", "SHARP", "SAMSUNG", "LG", "LG", >>>> "LG", >>>>>>>>>>>> "LG", "SAMSUNG", "SONY", "LG", "LG", "LG", "LG", "LG", >>>>>> "PANASONIC", >>>>>>>>>>>> "SONY", "SHARP", "SONY", "PANASONIC", "SONY", "SAMSUNG", >>>> "AOC", >>>>>>>>>>>> "PANASONIC", "SHARP", "AOC"), producto = c("SMART TV LED FHD >>>> 48\" >>>>>> 3D >>>>>>>>>>>> 48J6400", >>>>>>>>>>>> "SMART TV LED FHD 40\" 40J5300", "TV LED FULL HD 40'' >>>>>> TC-40CS600L", >>>>>>>>>>>> "TELEVISOR LED LE28F6600 28\"", "SMART TV 40\" HD LE40K5000N", >>>>>>>>>>>> "TV LED HD 32'' LE32B7000", "SMART TV 32'' LE32K5000N", "TV >>>> LED >>>>>> FHD >>>>>>>>>> 55\" - >>>>>>>>>>>> LE55B8000", >>>>>>>>>>>> "TV LED LE40B8000 FULL HD 40\"", "TV LE24B8000 LED HD 24\" - >>>>>> NEGRO", >>>>>>>>>>>> "TV LED FULL HD 42'' TC-42AS610", "TELEVISOR LED LE50K5000N >>>> 50\"", >>>>>>>>>>>> "SMART TV LED UHD 40\" 40JU6500", "SMART TV ULTRA HD 48'' >>>>>> 48JU6500", >>>>>>>>>>>> "SMART TV 50JU6500 LED UHD 50\" - NEGRO", "SMART TV ULTRA HD >>>> 55'' >>>>>> 3D >>>>>>>>>>>> 55JS9000", >>>>>>>>>>>> "SMART TV LED UHD 55\" 55JU6500", "SMART TV ULTRA HD 55'' >>>>>> 55JU6700", >>>>>>>>>>>> "SMART TV CURVO 55JU7500 LED UHD 55\" 3D - NEGRO", "SMART TV >>>>>> ULTRA HD >>>>>>>>>> 65'' >>>>>>>>>>>> 3D 65JS9000", >>>>>>>>>>>> "SMART TV 65JU6500 LED UHD 65\"", "SMART TV ULTRA HD 65'' >>>>>> 65JU7500", >>>>>>>>>>>> "SMART TV LED UHD 75\" 75JU6500", "SMART TV WEB OS 40\" FULL >>>> HD >>>>>>>>>> 40LF6350", >>>>>>>>>>>> "SMART TV 3D 42\" FULL HD 42LF6400", "TV LED 42\" FULL HD >>>> CINEMA >>>>>> 3D >>>>>>>>>>>> 42LF6450", >>>>>>>>>>>> "TV LED 49\" FULL HD CINEMA 3D 49LF6450", "SMART TV LF6400 >>>> 49\" >>>>>> FULL HD >>>>>>>>>>>> 3D", >>>>>>>>>>>> "TV 43UF6750 43\" ULTRA HD 4K", "TV 49\" ULTRA HD 4K >>>> 49UF6750", >>>>>>>>>>>> "TV LED 49\" ULTRA HD SMART UF6900", "SMART TV 49UF7700 49\" >>>>>> ULTRA HD >>>>>>>>>> 4K", >>>>>>>>>>>> "SMART TV 49UF8500 49\" ULTRA HD 4K 3D", "TV LED 55\" CINEMA >>>> 3D >>>>>> SMART >>>>>>>>>> TV >>>>>>>>>>>> 55UF7700", >>>>>>>>>>>> "SMART TV 65UF7700 65\" ULTRA HD 4K", "SMART TV 55UF8500 55\" >>>>>> ULTRA HD >>>>>>>>>> 4K >>>>>>>>>>>> 3D", >>>>>>>>>>>> "TV LED 55\" ULTRA HD 4K SMART TC-55CX640W", "TV LED 50\" >>>> ULTRA >>>>>> HD 4K >>>>>>>>>> SMART >>>>>>>>>>>> TC-50CX640W", >>>>>>>>>>>> "SMART TV 70UF7700 3D ULTRA HD 70\"", "TV LED CURVO 65\" >>>> ULTRA HD >>>>>> 4K >>>>>>>>>> CINEMA >>>>>>>>>>>> SMART UG8700", >>>>>>>>>>>> "TV LED 60\" FULL HD SMART LF6350", "SMART TV KDL-50FA95C 50\" >>>>>> FULL HD >>>>>>>>>> 3D", >>>>>>>>>>>> "SMART TV KDL50W805C 50\" FULL HD 3D", "TV LED 40\" FULL HD >>>>>>>>>> KDL-40R354B", >>>>>>>>>>>> "SMART TV LED FULL HD 40'' 40J5500", "SMART TV LED FULL HD >>>> 50'' >>>>>>>>>> 50J5500", >>>>>>>>>>>> "TV LED HD 32'' 32JH4005", "SMART TV LED FULL HD 50\" >>>> 50J5300", >>>>>>>>>>>> "SMART TV LED 48\" FULL HD 48J5300", "SMART TV FULL HD 40'' 3D >>>>>>>>>> 40J6400", >>>>>>>>>>>> "TV LED 32\" HD SMART KDL-32R505C", "TV LED 40\" SMART FULL HD >>>>>>>>>> KDL-40R555C >>>>>>>>>>>> - NEGRO", >>>>>>>>>>>> "SMART TV LED FHD 55\" 3D 55J6400", "TV 40JH5005 LED FHD 40\" >>>> - >>>>>> NEGRO", >>>>>>>>>>>> "TV 43\" FULL HD 43LF5410", "SMART TV 32LF585B LED HD 32\" - >>>>>> BLANCO", >>>>>>>>>>>> "TV LED 49\" FULL HD SMART 49LF5900", "SMART TV 65\" FULL HD >>>> 3D >>>>>>>>>>>> KDL-65W855C", >>>>>>>>>>>> "SMART TV LED FHD 48\" UN48J6500", "TV LED 40\" FULL HD >>>>>> LE40F1551", >>>>>>>>>>>> "TV LED 32'' SMART HD TC-32AS600L", "TV LED 32'' HD >>>> KDL-32R304B", >>>>>>>>>>>> "TV OLED 55\" SMART 3D FULL HD 55EC9300 PLATEADO", "TV LED HD >>>> 32'' >>>>>>>>>>>> LE32W454F", >>>>>>>>>>>> "TV LED 58\" ULTRA HD SMART 58UF8300", "TV LED 55\" FULL HD >>>> SMART >>>>>> 3D >>>>>>>>>>>> KDL-55W805C", >>>>>>>>>>>> "TV LED 49\" ULTRA HD 4K XBR-49X835C", "TV LED 55\" ULTRA HD >>>> 4K >>>>>>>>>>>> XBR-55X855C", >>>>>>>>>>>> "TV LED ULTRA DELGADO 55\" ULTRA HD 4K XBR-65X905C", "TV LED >>>> 75\" >>>>>>>>>> ULTRA HD >>>>>>>>>>>> 4K 3D XBR-75X945C", >>>>>>>>>>>> "TV LED ULTRA DELGADO 55\" ULTRA HD 4K XBR-55X905C", "SMART TV >>>>>> LED 60'' >>>>>>>>>>>> ULTRA HD 4K LC60UE30U", >>>>>>>>>>>> "SMART TV LED 70'' ULTRA HD 4K LC70UE30U", "SMART TV LED 80'' >>>>>> ULTRA HD >>>>>>>>>> 4K >>>>>>>>>>>> LC80UE30U", >>>>>>>>>>>> "SMART TV LED FULL HD 48'' 48J5500", "SMART TV CURVO 79UG8800 >>>> 79\" >>>>>>>>>> ULTRA HD >>>>>>>>>>>> 4K 3D", >>>>>>>>>>>> "SMART TV 65UF9500 65\" ULTRA HD 4K 3D", "SMART TV 65UF8500 >>>> 65\" >>>>>> ULTRA >>>>>>>>>> HD >>>>>>>>>>>> 4K 3D", >>>>>>>>>>>> "SMART TV 55UF9500 55\" ULTRA HD 4K 3D", "SMART TV LED HD 32\" >>>>>>>>>> 32J4300", >>>>>>>>>>>> "TV LED 48\" SMART FULL HD KDL-48R555C - NEGRO", "SMART TV >>>>>> 55UG8700 >>>>>>>>>> 55\" >>>>>>>>>>>> ULTRA HD 4K 3D", >>>>>>>>>>>> "SMART TV 60UF8500 60\" ULTRA HD 4K 3D", "SMART TV 55LF6500 >>>> 55\" >>>>>> FULL >>>>>>>>>> HD >>>>>>>>>>>> 3D", >>>>>>>>>>>> "TV 32LF550B 32\" HD", "TV LED 47\" FULL HD 47LB5610", "TV LED >>>>>> FULL HD >>>>>>>>>> 50'' >>>>>>>>>>>> TC-50AS600L", >>>>>>>>>>>> "TV SMART LED 55\" UHD 3D XBR-55X855B", "TV LED FULL HD 4K >>>>>> LC70SQ17U >>>>>>>>>> 70''", >>>>>>>>>>>> "TV LED SMART UHD 79\" XBR-79X905B", "TV LED FULL HD 40'' >>>>>> TC-40A400L", >>>>>>>>>>>> "TV LED SMART UHD 70\" XBR-70X855B", "SMART TV UHD 55'' 3D >>>> CURVO >>>>>>>>>> 55HU8700", >>>>>>>>>>>> "TV FULL HD LE40D3142 40\" - NEGRO", "TELEVISOR LED 42\" >>>>>> TC-42AS650L", >>>>>>>>>>>> "SMART TV LCD FHD 70\" LC70LE660", "TV LED FULL HD 58'' >>>> LE58D3140" >>>>>>>>>>>> ), pulgadas = c(48L, 40L, 40L, 28L, 40L, 32L, 32L, 55L, 40L, >>>>>>>>>>>> 24L, 42L, 50L, 40L, 48L, 50L, 55L, 55L, 55L, 55L, 65L, 65L, >>>> 65L, >>>>>>>>>>>> 75L, 40L, 42L, 42L, 49L, 49L, 43L, 49L, 49L, 49L, 49L, 55L, >>>> 65L, >>>>>>>>>>>> 55L, 55L, 50L, 70L, 65L, 60L, 50L, 50L, 40L, 40L, 50L, 32L, >>>> 50L, >>>>>>>>>>>> 48L, 40L, 32L, 40L, 55L, 40L, 43L, 32L, 49L, 65L, 48L, 40L, >>>> 32L, >>>>>>>>>>>> 32L, 55L, 32L, 58L, 55L, 49L, 55L, 55L, 75L, 55L, 60L, 70L, >>>> 80L, >>>>>>>>>>>> 48L, 79L, 65L, 65L, 55L, 32L, 48L, 55L, 60L, 55L, 32L, 47L, >>>> 50L, >>>>>>>>>>>> 55L, 70L, 79L, 40L, 70L, 55L, 40L, 42L, 70L, 58L), >>>> precio.antes >>>>>>>>>> c(2799L, >>>>>>>>>>>> 1799L, 1699L, 599L, 1299L, 699L, 999L, 1999L, 999L, 499L, >>>> 1899L, >>>>>>>>>>>> 1799L, 2499L, 3999L, 3699L, 10999L, 4299L, 5499L, 6999L, >>>> 14999L, >>>>>>>>>>>> 8999L, 9999L, 14599L, 1999L, 2299L, 2299L, 2899L, 2999L, >>>> 2299L, >>>>>>>>>>>> 23992L, 3599L, 3799L, 4799L, 4999L, 8499L, 5999L, 4999L, >>>> 3999L, >>>>>>>>>>>> 11999L, 10999L, 4399L, 4499L, 3799L, 1399L, 2299L, 2799L, >>>> 999L, >>>>>>>>>>>> 2199L, 2299L, 2299L, 1299L, 1699L, 3499L, 1399L, 1549L, 1299L, >>>>>>>>>>>> 2399L, 6499L, 2999L, 999L, 1249L, 999L, 14999L, 799L, 5999L, >>>>>>>>>>>> 4499L, 4999L, 6499L, 12999L, 24999L, 8999L, 5999L, 7599L, >>>> 14999L, >>>>>>>>>>>> 2499L, 29999L, 13999L, 9999L, 9699L, 1299L, 2399L, 6999L, >>>> 7999L, >>>>>>>>>>>> 3699L, 999L, 1899L, 2999L, 7999L, 8499L, 24999L, 1399L, >>>> 13999L, >>>>>>>>>>>> 8499L, 999L, 2599L, 5799L, 2399L), precio.nuevo = c(2299, >>>> 1399, >>>>>>>>>>>> 1299, 549, 1099, 629, 799, 1699, 849, 439, 1499, 1549, 1759.2, >>>>>>>>>>>> 2099.3, 2309.3, 7699.3, 2799.3, 3639.3, 4899.3, 10499.3, >>>> 5109.3, >>>>>>>>>>>> 6999.3, 10219.3, 1399, 1599, 1599, 2199, 2199, 1299, 23992, >>>> 2299, >>>>>>>>>>>> 2299, 2899, 2999, 5999, 3899, 4999, 3999, 8999, 6999, 4099, >>>> 3999, >>>>>>>>>>>> 3499, 1299, 1799, 2399, 799, 2199, 1799, 1999, 1199, 1599, >>>> 2999, >>>>>>>>>>>> 1199, 1399, 1099, 1999, 5999, 2799, 999, 1199, 949, 7999, 799, >>>>>>>>>>>> 5299, 4299, 3999, 5999, 11999, 23999, 7999, 5699, 7599, 14499, >>>>>>>>>>>> 2399, 29999, 11999, 8999, 7499, 1099, 2199, 6599, 7099, 3599, >>>>>>>>>>>> 899, 1599, 2199, 4999, 6499, 19999, 1399, 9999, 5999, 999, >>>> 2599, >>>>>>>>>>>> 5699, 2399), dif.precios = c(500, 400, 400, 50, 200, 70, 200, >>>>>>>>>>>> 300, 150, 60, 400, 250, 739.8, 1899.7, 1389.7, 3299.7, 1499.7, >>>>>>>>>>>> 1859.7, 2099.7, 4499.7, 3889.7, 2999.7, 4379.7, 600, 700, 700, >>>>>>>>>>>> 700, 800, 1000, 0, 1300, 1500, 1900, 2000, 2500, 2100, 0, 0, >>>>>>>>>>>> 3000, 4000, 300, 500, 300, 100, 500, 400, 200, 0, 500, 300, >>>> 100, >>>>>>>>>>>> 100, 500, 200, 150, 200, 400, 500, 200, 0, 50, 50, 7000, 0, >>>> 700, >>>>>>>>>>>> 200, 1000, 500, 1000, 1000, 1000, 300, 0, 500, 100, 0, 2000, >>>>>>>>>>>> 1000, 2200, 200, 200, 400, 900, 100, 100, 300, 800, 3000, >>>> 2000, >>>>>>>>>>>> 5000, 0, 4000, 2500, 0, 0, 100, 0), dif.porcentual = c(17.86, >>>>>>>>>>>> 22.23, 23.54, 8.35, 15.4, 10.01, 20.02, 15.01, 15.02, 12.02, >>>>>>>>>>>> 21.06, 13.9, 29.6, 47.5, 37.57, 30, 34.88, 33.82, 30, 30, >>>> 43.22, >>>>>>>>>>>> 30, 30, 30.02, 30.45, 30.45, 24.15, 26.68, 43.5, 0, 36.12, >>>> 39.48, >>>>>>>>>>>> 39.59, 40.01, 29.42, 35.01, 0, 0, 25, 36.37, 6.82, 11.11, 7.9, >>>>>>>>>>>> 7.15, 21.75, 14.29, 20.02, 0, 21.75, 13.05, 7.7, 5.89, 14.29, >>>>>>>>>>>> 14.3, 9.68, 15.4, 16.67, 7.69, 6.67, 0, 4, 5.01, 46.67, 0, >>>> 11.67, >>>>>>>>>>>> 4.45, 20, 7.69, 7.69, 4, 11.11, 5, 0, 3.33, 4, 0, 14.29, 10, >>>>>>>>>>>> 22.68, 15.4, 8.34, 5.72, 11.25, 2.7, 10.01, 15.8, 26.68, 37.5, >>>>>>>>>>>> 23.53, 20, 0, 28.57, 29.42, 0, 0, 1.72, 0), rangos >>>> c("S/.1500 - >>>>>>>>>> S/.2500", >>>>>>>>>>>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.500 - S/.1500", >>>>>> "S/.500 - >>>>>>>>>>>> S/.1500", >>>>>>>>>>>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >>>>>>>>>>>> "S/.500 - S/.1500", "< S/.500", "S/.500 - S/.1500", "S/.1500 - >>>>>>>>>> S/.2500", >>>>>>>>>>>> "S/.1500 - S/.2500", "S/.1500 - S/.2500", "S/.1500 - S/.2500", >>>>>>>>>>>> "> S/.4,500", "S/.2500 - S/.3500", "S/.3500 - S/.4500", "> >>>>>> S/.4,500", >>>>>>>>>>>> "> S/.4,500", "> S/.4,500", "> S/.4,500", "> S/.4,500", >>>> "S/.500 - >>>>>>>>>> S/.1500", >>>>>>>>>>>> "S/.1500 - S/.2500", "S/.1500 - S/.2500", "S/.1500 - S/.2500", >>>>>>>>>>>> "S/.1500 - S/.2500", "S/.500 - S/.1500", "> S/.4,500", >>>> "S/.1500 - >>>>>>>>>> S/.2500", >>>>>>>>>>>> "S/.1500 - S/.2500", "S/.2500 - S/.3500", "S/.2500 - S/.3500", >>>>>>>>>>>> "> S/.4,500", "S/.3500 - S/.4500", "> S/.4,500", "S/.3500 - >>>>>> S/.4500", >>>>>>>>>>>> "> S/.4,500", "> S/.4,500", "S/.3500 - S/.4500", "S/.3500 - >>>>>> S/.4500", >>>>>>>>>>>> "S/.2500 - S/.3500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >>>>>>>>>>>> "S/.1500 - S/.2500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >>>>>>>>>>>> "S/.1500 - S/.2500", "S/.1500 - S/.2500", "S/.500 - S/.1500", >>>>>>>>>>>> "S/.1500 - S/.2500", "S/.2500 - S/.3500", "S/.500 - S/.1500", >>>>>>>>>>>> "S/.500 - S/.1500", "S/.500 - S/.1500", "S/.1500 - S/.2500", >>>>>>>>>>>> "> S/.4,500", "S/.2500 - S/.3500", "S/.500 - S/.1500", >>>> "S/.500 - >>>>>>>>>> S/.1500", >>>>>>>>>>>> "S/.500 - S/.1500", "> S/.4,500", "S/.500 - S/.1500", "> >>>>>> S/.4,500", >>>>>>>>>>>> "S/.3500 - S/.4500", "S/.3500 - S/.4500", "> S/.4,500", "> >>>>>> S/.4,500", >>>>>>>>>>>> "> S/.4,500", "> S/.4,500", "> S/.4,500", "> S/.4,500", "> >>>>>> S/.4,500", >>>>>>>>>>>> "S/.1500 - S/.2500", "> S/.4,500", "> S/.4,500", "> S/.4,500", >>>>>>>>>>>> "> S/.4,500", "S/.500 - S/.1500", "S/.1500 - S/.2500", "> >>>>>> S/.4,500", >>>>>>>>>>>> "> S/.4,500", "S/.3500 - S/.4500", "S/.500 - S/.1500", >>>> "S/.1500 - >>>>>>>>>> S/.2500", >>>>>>>>>>>> "S/.1500 - S/.2500", "> S/.4,500", "> S/.4,500", "> S/.4,500", >>>>>>>>>>>> "S/.500 - S/.1500", "> S/.4,500", "> S/.4,500", "S/.500 - >>>>>> S/.1500", >>>>>>>>>>>> "S/.2500 - S/.3500", "> S/.4,500", "S/.1500 - S/.2500")), >>>> .Names >>>>>>>>>> c("id", >>>>>>>>>>>> "marca", "producto", "pulgadas", "precio.antes", >>>> "precio.nuevo", >>>>>>>>>>>> "dif.precios", "dif.porcentual", "rangos"), class >>>> "data.frame", >>>>>>>>>> row.names >>>>>>>>>>>> = c(NA, >>>>>>>>>>>> -97L)) >>>>>>>> >>>>>>>> ______________________________________________ >>>>>>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-help >>>>>>>> PLEASE do read the posting guide >>>>>> http://www.R-project.org/posting-guide.html >>>>>>>> and provide commented, minimal, self-contained, reproducible code. >>>>>>> >>>>>>> David Winsemius >>>>>>> Alameda, CA, USA >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>> >>>> >>>> [[alternative HTML version deleted]] >>>> >>>> ______________________________________________ >>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >>>> https://stat.ethz.ch/mailman/listinfo/r-help >>>> PLEASE do read the posting guide >>>> http://www.R-project.org/posting-guide.html >>>> and provide commented, minimal, self-contained, reproducible code. >>> >>> >>> > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.David Winsemius Alameda, CA, USA