2016-07-30 69 views
0

我得到一個名爲full的數據集,其中一個列是Breed,如下所示。數據列中的錯誤標記-R

Breed 

Shetland Sheepdog Mix 
Domestic Shorthair Mix 
Pit Bull Mix 
Domestic Shorthair Mix 
Lhasa Apso/Miniature Poodle 
Cairn Terrier/Chihuahua Shorthair 
Domestic Shorthair Mix 
Domestic Shorthair Mix 
American Pit Bull Terrier Mix 
Cairn Terrier 
Domestic Shorthair Mix 
Miniature Schnauzer Mix 
Pit Bull Mix 
Yorkshire Terrier Mix 
Great Pyrenees Mix 
Domestic Shorthair Mix 
Domestic Shorthair Mix 
Pit Bull Mix 
Angora Mix 
Flat Coat Retriever Mix 
Queensland Heeler Mix 
Domestic Shorthair Mix 
Plott Hound/Boxer 

我需要的是,

我需要獲得頻率列中的每個唯一值。

我已經提取了BreedType和頻率,如下所示。 (品種列的名稱爲BreedType) 然後,如果每個BreedType的頻率小於66,使用if條件,我需要有一個新的列'F',如果大於66需要分配列'Breedtype'的值。

對品種賦值FALSE其中品種頻率小於66

df$Breed <- data.frame(full$Breed) 

setDT(df) 
dt1 <- copy(df) 

dt1[, c("Frequency", "TrueFalse") := .(.N, ifelse(.N < 66, "FALSE", Breed)), by = Breed] 

dt1<-data.frame(dt1) 

但我的結果集得到答案這樣設置與顯示錯誤。

enter image description here

錯誤[.data.table(DT1,:=(C( 「頻率」, 「TrueFalse」),(N,:。 類型RHS的( '整數')必須LHS('字符匹配')。對於最快的情況,檢查和脅迫會對性能影響太大,或者改變目標列的類型,或者強制:=你自己的RHS(例如,通過使用1L而不是1)

我試過幾個次,但我無法得到結果看。請問有人請幫助

當再次使用完整的$品種時,結果集看起來就像這樣。而不是什麼預期,但頻率正確給予,

df$Breed <- data.frame(full$Breed) 

setDT(df) 
dt1 <- copy(df) 

dt1[, c("Frequency", "TrueFalse") := .(.N, ifelse(.N < 66, "FALSE", full$Breed)), by = full$Breed] 

dt1<-data.frame(dt1) 

Full<-cbind2(dt1, full) 

enter image description here

一個人可以幫到figureout是什麼問題!

+0

你嘗試'DT1 [C( 「頻率」, 「TrueFalse」):=。(.N,ifelse(.N <66,FALSE,Breed)),by = Breed]'(省略'FALSE'附近的引號)? – Jaap

+0

是的,當它被測試,給出相同的錯誤, 錯誤在'[.data.table'(dt1,,':='(c(「Frequency」,「TrueFalse」),。(。N,: Type RHS('邏輯')必須與LHS('字符')匹配。檢查和脅迫會對最快情況的性能影響太大。要麼改變目標列的類型,要麼強制:=你自己的RHS使用1L而不是1) – user3789200

+0

對示例數據進行了測試,帶**引號的代碼**適用於我的PC。 – Jaap

回答

0

你可以使用dplyr:

library(dplyr) 
df%>%group_by(Breed)%>%summarize(Frequency=n())%>%mutate(TrueFalse=ifelse(Frequency<66,"F",as.character(Breed))) 

導致:

Source: local data frame [14 x 3] 

            Breed Frequency    TrueFalse 
            <fctr>  <int>     <chr> 
    1  American Pit Bull Terrier Mix   4      F 
    2       Angora Mix   2      F 
    3      Cairn Terrier   4      F 
    4 Cairn Terrier/Chihuahua Shorthair   4      F 
    5    Domestic Shorthair Mix  519 Domestic Shorthair Mix 
    6    Flat Coat Retriever Mix   2      F 
    7     Great Pyrenees Mix   4      F 
    8   Lhasa Apso/Miniature Poodle   4      F 
    9    Miniature Schnauzer Mix   4      F 
    10      Pit Bull Mix  10      F 
    11     Plott Hound/Boxer  73  Plott Hound/Boxer 
    12    Queensland Heeler Mix   2      F 
    13    Yorkshire Terrier Mix   4      F 
    14    Shetland Sheepdog Mix  75 Shetland Sheepdog Mix 

其中df是:

df<-structure(list(Breed = structure(c(14L, 5L, 10L, 5L, 8L, 4L, 
5L, 5L, 1L, 3L, 5L, 9L, 10L, 13L, 7L, 5L, 5L, 10L, 2L, 6L, 12L, 
5L, 11L, 14L, 5L, 10L, 5L, 8L, 4L, 5L, 5L, 1L, 3L, 5L, 9L, 10L, 
13L, 7L, 5L, 5L, 10L, 2L, 6L, 12L, 5L, 11L, 14L, 5L, 10L, 5L, 
8L, 4L, 5L, 5L, 1L, 3L, 5L, 9L, 10L, 13L, 7L, 14L, 5L, 10L, 5L, 
8L, 4L, 5L, 5L, 1L, 3L, 5L, 9L, 10L, 13L, 7L, 5L, 11L, 14L, 5L, 
5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 
14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 
5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 
14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 
5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 
14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 
5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 
14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 
5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 
14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 
5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 
14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 
5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 
14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 
5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 
14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 
5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 
14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 
5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 
14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 5L, 11L, 14L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L), .Label = c(" American Pit Bull Terrier Mix", 
" Angora Mix", " Cairn Terrier", " Cairn Terrier/Chihuahua Shorthair", 
" Domestic Shorthair Mix", " Flat Coat Retriever Mix", " Great Pyrenees Mix", 
" Lhasa Apso/Miniature Poodle", " Miniature Schnauzer Mix", " Pit Bull Mix", 
" Plott Hound/Boxer", " Queensland Heeler Mix", " Yorkshire Terrier Mix", 
"Shetland Sheepdog Mix"), class = "factor")), .Names = "Breed", class = "data.frame", row.names = c(NA, 
-711L))