【发布时间】:2014-09-02 21:42:59
【问题描述】:
我想知道是否可以以更有效和“优雅”的方式完成以下操作:
我有类似于下面的数据,其中包含国家名称(位置)和一个国家加入的协议数量(no.agreements):
d <- structure(list(location = c("Afghanistan", "Angola", "Bangladesh",
"Bosnia-Herzegovina", "Burundi", "C\x99te d'Ivoire", "Cambodia",
"Chad", "Colombia", "Comoros", "Congo", "Croatia", "Democratic Republic of Congo (Zaire)",
"Djibouti", "El Salvador", "Georgia", "Guatemala", "Guinea Bissau",
"Haiti", "India", "Indonesia", "Liberia", "Macedonia", "Mali",
"Mexico", "Moldova", "Mozambique", "Nepal", "Niger", "Papua-New Guinea",
"Philippines", "Rwanda", "Senegal", "Serbia (Yugoslavia)", "Sierra Leone",
"Somalia", "South Africa", "Sudan", "Tajikistan", "Uganda", "United Kingdom"
), no.agreements = c(3L, 5L, 1L, 2L, 3L, 4L, 1L, 10L, 1L, 1L,
1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 3L, 1L, 1L, 1L, 1L,
1L, 1L, 2L, 3L, 3L, 1L, 1L, 2L, 3L, 2L, 1L, 3L, 1L, 1L, 1L)), .Names = c("location",
"no.agreements"), row.names = c(1L, 4L, 9L, 10L, 12L, 15L, 19L,
20L, 30L, 31L, 32L, 33L, 34L, 36L, 38L, 39L, 40L, 41L, 42L, 43L,
45L, 47L, 50L, 51L, 52L, 53L, 54L, 55L, 56L, 58L, 61L, 64L, 65L,
66L, 68L, 71L, 73L, 74L, 77L, 78L, 79L), class = "data.frame")
我对有多少国家(可变“位置”)有 1、2、3 等协议的频率感兴趣。 ftable(d$no.agreements) 产生请求的结果:23 个国家有 1 个协议,2 个国家有 8 个协议...
1 2 3 4 5 10
23 8 7 1 1 1
我现在想知道是否有直接的方法添加另一行 (!),其中包括每个类别中包含的国家/地区的名称,例如有 10 个协议的 1 个国家是乍得,有 5 个协议的 1 个国家是安哥拉等。附加行中的相应单元格将包括所有相关的国家名称(作为字符串)。
当然,我可以通过例如d[d$no.agreements==10,c("location")],然后对所有频率重复此操作并手动创建一个表,例如在 Excle 中。但是我想知道是否没有更直接的方法可以将位置名称作为列表(?)插入到附加行的单元格中。
这会让事情变得更加高效。非常感谢。
【问题讨论】: