#r #fread #grepl
#r #fread #grepl
Вопрос:
На данный момент я импортирую свой набор данных в R, используя следующий код:
require(data.table)
require(QuantPsyc)
library(lmSupport)
library(dbplyr)
#Import OID Label Data based on Open Image Data Set only
flickrcar <- fread("/Users/01_Open Image Data Set/01_Raw Data/flickrexport_cars_oid_201903.csv",sep=",", encoding = "Latin-1", header=TRUE)
После импорта данных набор имеет следующую структуру:
Classes ‘data.table’ and 'data.frame': 820600 obs. of 2180 variables:
$ count_comments : int 0 0 0 0 0 2 2 0 0 1 ...
$ count_faves : int 5 2 2 15 1 3 19 5 1 4 ...
$ dateadded : int 1530174689 1530174688 1530174687 1530162494 1530159458 1530158648 1530158074 1529994404 1529992211 1529868922 ...
$ datetaken : chr "2018-05-10 15:50:59" "2018-05-10 15:50:53" "2018-05-10 15:50:03" "2006-11-27 00:00:00" ...
$ dateupload : int 1530174672 1530174671 1530174669 1498275521 1436228321 1482723483 1496706006 1529994381 1529992197 1529868901 ...
$ group_url : chr "https://www.flickr.com/groups/capriceclassic/" "https://www.flickr.com/groups/capriceclassic/" "https://www.flickr.com/groups/capriceclassic/" "https://www.flickr.com/groups/capriceclassic/" ...
$ id :integer64 42341316794 42341318944 42341324184 35456820766 19292939750 31070311463 34738418140 42964602432 ...
$ license : int 6 6 6 0 0 0 0 6 0 6 ...
$ oid.800metres : logi NA NA NA NA NA NA ...
$ oid.Abbey : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Abdomen : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Academicconference : logi NA NA NA NA NA NA ...
$ oid.Academicdress : logi NA NA NA NA NA NA ...
$ oid.Accipitriformes : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Acousticguitar : logi NA NA NA NA NA NA ...
$ oid.Acoustic-electricguitar : logi NA NA NA NA NA NA ...
$ oid.Acrylicpaint : logi NA NA NA NA NA NA ...
$ oid.Actionfigure : logi NA NA NA NA NA NA ...
$ oid.Adolescent : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Adult : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Adventure : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Advertising : num NA NA NA NA NA ...
$ oid.Aeolianlandform : logi NA NA NA NA NA NA ...
$ oid.Aerialphotography : logi NA NA NA NA NA NA ...
$ oid.Aerobatics : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Aerospaceengineering : logi NA NA NA NA NA NA ...
$ oid.Africanelephant : logi NA NA NA NA NA NA ...
$ oid.Afterglow : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Agaric : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Agaricaceae : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Agaricus : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Agriculturalmachinery : logi NA NA NA NA NA NA ...
$ oid.Agriculture : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Airforce : logi NA NA NA NA NA NA ...
$ oid.Airracing : logi NA NA NA NA NA NA ...
$ oid.Airshow : logi NA NA NA NA NA NA ...
$ oid.Airsports : logi NA NA NA NA NA NA ...
$ oid.Airtravel : logi NA NA NA NA NA NA ...
$ oid.Airbusa320family : logi NA NA NA NA NA NA ...
$ oid.Aircraft : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Aircraftcabin : logi NA NA NA NA NA NA ...
$ oid.Aircraftcarrier : logi NA NA NA NA NA NA ...
$ oid.Aircraftengine : logi NA NA NA NA NA NA ...
$ oid.Airline : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Airliner : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Airplane : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Airport : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Airportapron : logi NA NA NA NA NA NA ...
$ oid.Airportterminal : logi NA NA NA NA NA NA ...
$ oid.Aisle : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Albumcover : logi NA NA NA NA NA NA ...
$ oid.Alcohol : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Alcoholicbeverage : logi NA NA NA NA NA NA ...
$ oid.Ale : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Algae : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Alley : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Alligator : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Alloywheel : logi NA NA NA NA NA NA ...
$ oid.All-terrainvehicle : logi NA NA NA NA NA NA ...
$ oid.Alps : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Altar : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Amateurboxing : logi NA NA NA NA NA NA ...
$ oid.Amateurwrestling : logi NA NA NA NA NA NA ...
$ oid.Ambulance : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Americanfootball : logi NA NA NA NA NA NA ...
$ oid.Amphibian : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Amphibiousassaultship : logi NA NA NA NA NA NA ...
$ oid.Amphibioustransportdock : logi NA NA NA NA NA NA ...
$ oid.Amphitheatre : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Amusementpark : logi NA NA NA NA NA NA ...
$ oid.Amusementride : logi NA NA NA NA NA NA ...
$ oid.Ancientgreektemple : logi NA NA NA NA NA NA ...
$ oid.Ancienthistory : logi NA NA NA NA NA NA ...
$ oid.Ancientromanarchitecture : logi NA NA NA NA NA NA ...
$ oid.Ancientrome : logi NA NA NA NA NA NA ...
$ oid.Animal : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Animalmigration : logi NA NA NA NA NA NA ...
$ oid.Animalshelter : logi NA NA NA NA NA NA ...
$ oid.Animalsports : logi NA NA NA NA NA NA ...
$ oid.Animaltraining : logi NA NA NA NA NA NA ...
$ oid.Anime : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Annualplant : logi NA NA NA NA NA NA ...
$ oid.Ant : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Antelope : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Antique : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Antiquecar : logi NA NA NA NA NA NA ...
$ oid.Apartment : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Ape : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Apple : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Aqua : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Aquarium : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Aquaticplant : logi NA NA NA NA NA NA ...
$ oid.Aqueduct : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Arabiancamel : logi NA NA NA NA NA NA ...
$ oid.Arcade : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Arch : num NA NA NA NA NA NA NA NA NA NA ...
$ oid.Archbridge : logi NA NA NA NA NA NA ...
$ oid.Archaeologicalsite : logi NA NA NA NA NA NA ...
$ oid.Archipelago : num NA NA NA NA NA NA NA NA NA NA ...
[list output truncated]
- attr(*, ".internal.selfref")=<externalptr>
Проблема в том, что fread каким-то образом неправильно интерпретирует некоторые столбцы «oid.XXXX». Все они должны иметь тип «num». Однако я не могу просто изменить соответствующие столбцы на «num» после импорта данных, поскольку это оставило бы меня с «FALSE, 0 или 1» вместо числовых значений.
Поэтому я пытаюсь присвоить определенный colClass всем столбцам «oid.XXX» в самой функции fread(). Это то, что я придумал до сих пор:
flickrcar <- fread("/Users/01_Open Image Data Set/01_Raw Data/flickrexport_cars_oid_201903.csv", colClasses=list(numerical=grep("oid.", names(flickrcar), value = TRUE)),sep=",", encoding = "Latin-1", header=TRUE)
К сожалению, это не работает. Заранее большое спасибо за вашу помощь!
Комментарии:
1. что вы имеете в виду, говоря «это оставило бы меня с «FALSE, 0 или 1″»?. Если вы это сделаете
as.numeric(c(NA, FALSE, TRUE))
, вы получитеNA, 0, 1
2. Да, я прошу прощения, конечно, я имею в виду NA, 0, 1. Но я ищу числовые значения вероятности.
Ответ №1:
Вы могли бы сначала прочитать только заголовок, чтобы найти, какие столбцы имеют oid
в своем названии. Затем установите классы соответствующим образом:
x = fread('
A B C oid.a oid.b D E
1 2 3 NA NA 6 7',
nrows = 0)
colNames = grep('^oid', names(x), value = TRUE)
colClasses = rep('numeric', length(colNames))
names(colClasses) = colNames
x = fread('
A B C oid.a oid.b D E
1 2 3 NA NA 6 7',
colClasses = colClasses)
str(x)
# Classes ‘data.table’ and 'data.frame': 1 obs. of 7 variables:
# $ A : int 1
# $ B : int 2
# $ C : int 3
# $ oid.a: num NA
# $ oid.b: num NA
# $ D : int 6
# $ E : int 7
Альтернативой, конечно, было бы переделать столбцы после их чтения, но для больших данных правильная настройка класса сначала, как показано, вероятно, была бы предпочтительнее
Комментарии:
1. совершенное спасибо вам большое! Это именно то, что я искал.