2015-03-10 5 views
3

Я хочу рассчитать количество символов каждой строки столбца name. Мой dataframe sample будет, как показано ниже:Поиск длины каждой строки в столбце кадра данных в R

date  name   expenditure  type 
23MAR2013 KOSH ENTRP  4000    COMPANY 
23MAR2013 JOHN DOE  800    INDIVIDUAL 
24MAR2013 S KHAN   300    INDIVIDUAL 
24MAR2013 JASINT PVT LTD 8000    COMPANY 
25MAR2013 KOSH ENTRPRISE 2000    COMPANY 
25MAR2013 JOHN S DOE  220    INDIVIDUAL 
25MAR2013 S KHAN   300    INDIVIDUAL 
26MAR2013 S KHAN   300    INDIVIDUAL 

Почему это nchar дает мне список случайных чисел? Так str_length() из stringr пакета

Length <- aggregate(nchar(sample$name), by=list(sample$name), FUN=nchar) 

Выход

  Group.1  x 
1 JASINT PVT LTD  2 
2  JOHN DOE  1 
3  JOHN S DOE  2 
4  KOSH ENTRP  2 
5 KOSH ENTRPRISE  2 
6   S KHAN 1, 1, 1 

Желаемая Выход:

 Group.1  x 
1 JASINT PVT LTD  14 
2  JOHN DOE  8 
3  JOHN S DOE  10 
4  KOSH ENTRP  10 
5 KOSH ENTRPRISE  14 
6   S KHAN  6 

CSV-за приведенной выше таблице:

"Date","name","expenditure","type" 
"23MAR2013","KOSH ENTRP",4000,"COMPANY" 
"23MAR2013 ","JOHN DOE",800,"INDIVIDUAL" 
"24MAR2013","S KHAN",300,"INDIVIDUAL" 
"24MAR2013","JASINT PVT LTD",8000,"COMPANY" 
"25MAR2013","KOSH ENTRPRISE",2000,"COMPANY" 
"25MAR2013","JOHN S DOE",220,"INDIVIDUAL" 
"25MAR2013","S KHAN",300,"INDIVIDUAL" 
"26MAR2013","S KHAN",300,"INDIVIDUAL" 
+2

Нужно ли включать «пробелы» в подсчет? В ожидаемом выходе есть некоторая несогласованность в отношении количества символов. Например, в первой строке пробел также подсчитывался, но в последней строке '5' пробел опущен. Если это опечатка' data .frame (Group = unique (sample $ name), x = nchar (unique (sample $ name))) ' – akrun

+0

Так что извините, это была опечатка .. Пробелы также нужно учитывать. – sunitprasad1

ответ

2

Вы также можете applynchar к вашему dataframe и получить результат из соответствующего столбца:

data.frame(names=temp$name,chr=apply(temp,2,nchar)[,2]) 
     names chr 
1  KOSH ENTRP 10 
2  JOHN DOE 8 
3   S KHAN 6 
4 JASINT PVT LTD 14 
5 KOSH ENTRPRISE 14 
6  JOHN S DOE 10 
7   S KHAN 6 
8   S KHAN 6 
2

Если последняя строка в "Желаемая Output" опечатка,

aggregate(name~name1, transform(sample, name1=name), 
         FUN=function(x) nchar(unique(x))) 
#   name1 name 
#1 JASINT PVT LTD 14 
#2  JOHN DOE 8 
#3  JOHN S DOE 10 
#4  KOSH ENTRP 10 
#5 KOSH ENTRPRISE 14 
#6   S KHAN 6 

Или

Un1 <- unique(sample$name) 
data.frame(Group=Un1, x=nchar(Un1)) 
1

Также можно использовать data.table

dtx[,PepSeqLen := nchar(PepSeq)] 
Смежные вопросы