R中的数据帧修改
下面的三行R代码显示了向量a1、b1和“c1”,这是字段a1的唯一值。我想显示一个包含两列的数据框,其中c1的每个元素在一列中显示的次数等于“a1”中元素的长度,在另一列中显示该字母对应的ID“b1”。简单地说,假设一个包含列“y”的数据帧,其中来自“c1”的字母“a”将背靠背表示6次(字符串a1的长度),然后是“b”6次,然后是c,依此类推。同样对应于另一列中的a,“1”6次,然后“2”6次,依此类推。请帮忙,谢谢R中的数据帧修改,r,dplyr,unique,R,Dplyr,Unique,下面的三行R代码显示了向量a1、b1和“c1”,这是字段a1的唯一值。我想显示一个包含两列的数据框,其中c1的每个元素在一列中显示的次数等于“a1”中元素的长度,在另一列中显示该字母对应的ID“b1”。简单地说,假设一个包含列“y”的数据帧,其中来自“c1”的字母“a”将背靠背表示6次(字符串a1的长度),然后是“b”6次,然后是c,依此类推。同样对应于另一列中的a,“1”6次,然后“2”6次,依此类推。请帮忙,谢谢 a1 = c("a","b","c","d","a","b") b1 = c(
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)
这达到了你的要求,我相信:
cbind(rep(c1, each = length(a1)),rep(b1, each = length(a1)))
在应用
unique()
函数之前,必须将a1
和b1
组合成一个data.frame。否则,向量具有不同的长度
DF <- data.frame(a1, b1)
unique(DF)[rep(1:nrow(unique(DF)), each = nrow(DF)), ]
结果是:
由24行组成(在a1
中4个唯一值乘以6,即a1
的长度)
请注意,这不同于包含36行(length(b1)
乘以length(a1)
,原因是rep(b1,每个=length(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)
结果由66行组成(6个唯一值乘以11)。
(为了简洁起见,输出省略)。我已经看完了一部分,rep(c1,each=length(a1)),给了我相应的列,请帮助我为字符串中的每个字母指定正确的索引。这是你的意思吗?cbind(rep(c1,each=length(a1)),rep(b1,each=length(a1)))非常感谢@user124123,但很抱歉,我在第二部分添加了一个新的调整,你能帮我解决一个问题吗,多个字母有相同的索引,然后我想分配它们,谢谢。如果你帮我的话,我肯定会接受你的回答。这里有任何线索吗?请查看你的答案。
rep(c1,每个=长度(a1))
和rep(b1,每个=长度(a1))
的长度分别为24和36(对于第一个数据集),并发出警告。
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
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)