您好!您的提问中没有说得很清楚原始数据和目标格式数据之间的关系,所以我假定您的原始数据是类似于各推文在各个省份中的转发数量,长成下面这个样子:
推文 省份 人数 占比
推文1 北京 200 0.33
推文2 北京 300 0.50
推文3 北京 100 0.17
推文1 山东 1000 0.23
推文2 山东 2000 0.45
推文3 山东 1400 0.32
下面是利用reshap包解决该问题的代码:
# 读取原始数据
> dataori <- read.csv("dataori.csv")
> # 先规范整合原始数据,以推文和省份作为每个数据的唯一“身份证”
> datamelt <- melt(dataori, id = c("推文", "省份"))
> # 就会变成这样
> datamelt
推文 省份 variable value
1 推文1 北京 人数 200.00
2 推文2 北京 人数 300.00
3 推文3 北京 人数 100.00
4 推文1 山东 人数 1000.00
5 推文2 山东 人数 2000.00
6 推文3 山东 人数 1400.00
7 推文1 北京 占比 0.33
8 推文2 北京 占比 0.50
9 推文3 北京 占比 0.17
10 推文1 山东 占比 0.23
11 推文2 山东 占比 0.45
12 推文3 山东 占比 0.32
> #然后我们就可以随心所欲地变形了
> datatar <- cast(datamelt, 推文~省份+variable)
> # 这就是我们要的目标数据了
> datatar
推文 北京_人数 北京_占比 山东_人数 山东_占比
1 推文1 200 0.33 1000 0.23
2 推文2 300 0.50 2000 0.45
3 推文3 100 0.17 1400 0.32
希望对您有所帮助。