计算大型数据框中特定列的计数和字符长度

时间:2015-02-28 00:07:37

标签: r

非常想要一些帮助!

我有一个数据框,其中包含12个带有字母数字信息的12个变量(列)。为简化起见,我们可以说这些是数据框中的两列。 Col1 = a,b,a,c,e,a,b,c Col2 = AAAA,BB,CCCCCC,AAA,BB,CC,AAAA,BB,CCCCCC

  1. 想要一个输出,为第1列的每个值创建所有值的长度(例如" AAAA" =长度为4)的平均值。例如:for value& #34;"在col1中,输出为4(AAAA = 4; CCCCCC = 6; CC = 2;均值= 4)。

  2. 想要一个输出,它给出了整个数据集中col 2中特定值存在的次数 - 但希望它按列1的值进行子集化。

  3. 感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这是我的尝试。 str_count(Col2, ".")计算存在多少个字母。通过这种方式,我测量了弦的长度。然后,我按Col1对数据进行分组并计算平均值。这是第一部分。至于第二部分,我在count()包中使用了dplyr。我希望这就是你的意思。

library(stringr)
library(dplyr)

# For the first part
mutate(mydf, num = str_count(Col2, ".")) %>%
group_by(Col1) %>%
summarise(num.Ave = sum(num) / n())

#  Col1 num.Ave
#1    a     4.0
#2    b     3.0
#3    c     2.5
#4    e     2.0

# For the 2nd part

count(mydf, Col1, Col2)

#  Col1   Col2 n
#1    a   AAAA 1
#2    a     CC 1
#3    a CCCCCC 1
#4    b   AAAA 1
#5    b     BB 1
#6    c    AAA 1
#7    c     BB 1
#8    e     BB 1

DATA

mydf <- structure(list(Col1 = c("a", "b", "a", "c", "e", "a", "b", "c"
), Col2 = c("AAAA", "BB", "CCCCCC", "AAA", "BB", "CC", "AAAA", 
"BB")), .Names = c("Col1", "Col2"), row.names = c(NA, -8L), class = "data.frame")

# mydf
#  Col1   Col2
#1    a   AAAA
#2    b     BB
#3    a CCCCCC
#4    c    AAA
#5    e     BB
#6    a     CC
#7    b   AAAA
#8    c     BB