r-studio新手,我有一个两列csv文件(响应,id),响应列有一个指定的ID号。例如,行1-250被分配了id 1,行251-311被分配了id 2,等等。
我可以编写一个接受id号的循环,R根据传递的id号生成字频吗?输出将是新的csv文件。
这可行吗?任何例子将不胜感激。
答案 0 :(得分:1)
当然可以!
例如:
# Generate some random data
data <- data.frame(id=rep(1:10, each=200), val=rnorm(2000))
h <- hist(subset(data, id=5)$val, plot=0)
write.csv("output.csv", h$counts)
修改强> 这是如何工作的:
subset(data, id=5)
只会获得名为id
的列等于5的行。
现在,一旦我们只选择了我们想要的行(显然5只是一个例子,你可以传递你想要的任何值,也可以在变量中),你可以使用$
得到你想要计算的值。操作
所以subset(data, id=5)$val
表示:获取id = 5的所有行,然后考虑名为val
的列。
在我的示例中,val是一个整数,因此我使用hist
函数来获取计数(plot=0
仅用于抑制图形输出)。如果您有字符串,则可以使用table
函数。
最后,write.csv
将结果输出到csv文件。有关这些功能的(多个)选项的详细帮助,请参阅?write.csv
或?write.table
。
答案 1 :(得分:1)
我可能会误读原始问题,但OP会询问与指定ID号码组相对应的字数。
如果是这样,dplyr
和正则表达式的正则表达式是否满足需要?类似的东西:
new.df <- data %.% # start with the two-column data frame of id and word strings
group_by(id) %.% # aggregate the ids, e.g. id1, id2
summarise(WordCount = gsub("^.*\\s", "", dataResponse) # count all the words in the 2nd column. There are multiple ways to count words.