非常想要一些帮助!
我有一个数据框,其中包含12个带有字母数字信息的12个变量(列)。为简化起见,我们可以说这些是数据框中的两列。 Col1 = a,b,a,c,e,a,b,c Col2 = AAAA,BB,CCCCCC,AAA,BB,CC,AAAA,BB,CCCCCC
想要一个输出,为第1列的每个值创建所有值的长度(例如" AAAA" =长度为4)的平均值。例如:for value& #34;"在col1中,输出为4(AAAA = 4; CCCCCC = 6; CC = 2;均值= 4)。
想要一个输出,它给出了整个数据集中col 2中特定值存在的次数 - 但希望它按列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