下面三行R代码表示矢量a1,b1和“c1”,它是字段a1的唯一。我想显示两列的数据框,其中我应该让c1的每个元素显示的次数等于“a1”中的元素长度,在一列中,以及该字母的相应ID“b1”在另一列中柱。简单地说,一个带有“y”列的数据框,其中“c1”中的字母“a”将表示背靠背6次(字符串a1的长度),然后是“b”6次,然后是c,依此类推。也对应于其他列中的“1”6次,然后“2”6次,依此类推。请帮助和谢谢。
a1 = c("a","b","c","d","a","b")
b1 = c(1,2,3,4,1,2)
c1 = unique(a1)
新变化
a1 = c("a","b","b","d","c","e","f","a","b","c","d")
b1 = c(1,1,1,2,3,2,3,1,1,3,2)
c1 = unique(a1)
答案 0 :(得分:0)
a1
和b1
必须合并为一个数据。在应用unique()
函数之前,在 框中。否则,向量的长度将不同。
DF <- data.frame(a1, b1)
unique(DF)[rep(1:nrow(unique(DF)), each = nrow(DF)), ]
对于第一个数据集
a1 = c("a","b","c","d","a","b")
b1 = c(1,2,3,4,1,2)
结果是:
a1 b1 1 a 1 1.1 a 1 1.2 a 1 1.3 a 1 1.4 a 1 1.5 a 1 2 b 2 2.1 b 2 2.2 b 2 2.3 b 2 2.4 b 2 2.5 b 2 3 c 3 3.1 c 3 3.2 c 3 3.3 c 3 3.4 c 3 3.5 c 3 4 d 4 4.1 d 4 4.2 d 4 4.3 d 4 4.4 d 4 4.5 d 4
由24行组成(a1
中的4个唯一值乘以6,即a1
的长度)
请注意,这与user124123's answer不同,后者有36行(是length(b1)
造成的length(a1)
的{{1}}倍。
对于第二个数据集
rep(b1, each = length(a1))
结果由66行组成(6个唯一值乘以11)。 (为简便起见,省略了输出。)
答案 1 :(得分:-1)
这实现了你的要求我相信:
cbind(rep(c1, each = length(a1)),rep(b1, each = length(a1)))