Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中的数据帧修改_R_Dplyr_Unique - Fatal编程技术网

R中的数据帧修改

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(

下面的三行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(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)