我有一个中国星座的数据集,按照相应的星座分组,其数据框中的序列如下:
c("紫微垣", "紫微垣", "紫微垣", "紫微垣", "紫微垣",
"紫微垣", "紫微垣", "紫微垣", "紫微垣", "紫微垣",
"紫微垣", "紫微垣", "紫微垣", "紫微垣", "紫微垣",
"紫微垣", "紫微垣", "紫微垣", "紫微垣", "紫微垣",
"紫微垣", "紫微垣", "紫微垣", "紫微垣", "紫微垣",
"紫微垣", "紫微垣", "紫微垣", "紫微垣", "紫微垣",
"紫微垣", "紫微垣", "紫微垣", "紫微垣", "紫微垣",
"紫微垣", "紫微垣", "太微垣", "太微垣", "太微垣",
"太微垣", "太微垣", "太微垣", "太微垣", "太微垣",
"太微垣", "太微垣", "太微垣", "太微垣", "太微垣",
"太微垣", "太微垣", "太微垣", "太微垣", "太微垣",
"太微垣", "太微垣", "天市垣", "天市垣", "天市垣",
"天市垣", "天市垣", "天市垣", "天市垣", "天市垣",
"天市垣", "天市垣", "天市垣", "天市垣", "天市垣",
"天市垣", "天市垣", "天市垣", "天市垣", "天市垣",
"天市垣", "角宿", "角宿", "角宿", "角宿", "角宿",
"角宿", "角宿", "角宿", "角宿", "角宿", "角宿", "亢宿",
"亢宿", "亢宿", "亢宿", "亢宿", "亢宿", "亢宿", "氐宿",
"氐宿", "氐宿", "氐宿", "氐宿", "氐宿", "氐宿", "氐宿",
"氐宿", "氐宿", "氐宿", "房宿", "房宿", "房宿", "房宿",
"房宿", "房宿", "房宿", "心宿", "心宿", "尾宿", "尾宿",
"尾宿", "尾宿", "尾宿", "箕宿", "箕宿", "箕宿", "斗宿",
"斗宿", "斗宿", "斗宿", "斗宿", "斗宿", "斗宿", "斗宿",
"斗宿", "斗宿", "牛宿", "牛宿", "牛宿", "牛宿", "牛宿",
"牛宿", "牛宿", "牛宿", "牛宿", "牛宿", "牛宿", "女宿",
"女宿", "女宿", "女宿", "女宿", "女宿", "女宿", "女宿",
"虛宿", "虛宿", "虛宿", "虛宿", "虛宿", "虛宿", "虛宿",
"虛宿", "虛宿", "虛宿", "危宿", "危宿", "危宿", "危宿",
"危宿", "危宿", "危宿", "危宿", "危宿", "危宿", "室宿",
"室宿", "室宿", "室宿", "室宿", "室宿", "室宿", "室宿",
"室宿", "室宿", "壁宿", "壁宿", "壁宿", "壁宿", "壁宿",
"壁宿", "奎宿", "奎宿", "奎宿", "奎宿", "奎宿", "奎宿",
"奎宿", "奎宿", "奎宿", "婁宿", "婁宿", "婁宿", "婁宿",
"婁宿", "婁宿", "胃宿", "胃宿", "胃宿", "胃宿", "胃宿",
"胃宿", "胃宿", "昴宿", "昴宿", "昴宿", "昴宿", "昴宿",
"昴宿", "昴宿", "昴宿", "昴宿", "畢宿", "畢宿", "畢宿",
"畢宿", "畢宿", "畢宿", "畢宿", "畢宿", "畢宿", "畢宿",
"畢宿", "畢宿", "畢宿", "畢宿", "觜宿", "觜宿", "觜宿",
"參宿", "參宿", "參宿", "參宿", "參宿", "參宿", "井宿",
"井宿", "井宿", "井宿", "井宿", "井宿", "井宿", "井宿",
"井宿", "井宿", "井宿", "井宿", "井宿", "井宿", "井宿",
"井宿", "井宿", "井宿", "井宿", "鬼宿", "鬼宿", "鬼宿",
"鬼宿", "鬼宿", "鬼宿", "鬼宿", "柳宿", "柳宿", "星宿",
"星宿", "星宿", "星宿", "星宿", "張宿", "張宿", "翼宿",
"翼宿", "軫宿", "軫宿", "軫宿", "軫宿", "軫宿", "南極星區",
"南極星區", "南極星區", "南極星區", "南極星區",
"南極星區", "南極星區", "南極星區", "南極星區",
"南極星區", "南極星區", "南極星區", "南極星區",
"南極星區", "南極星區", "南極星區", "南極星區",
"南極星區", "南極星區", "南極星區", "南極星區",
"南極星區", "南極星區")
我有另一个列表,其中包含这些星号之间的结构关系。
structure(list(三垣 = c("紫微垣", "太微垣", "天市垣"
), 四象 = c("蒼龍(東)", "玄武(北)", "白虎(西)", "朱雀(南)"
), 二十八宿 = structure(c("角宿", "亢宿", "氐宿", "房宿",
"心宿", "尾宿", "箕宿", "斗宿", "牛宿", "女宿", "虛宿",
"危宿", "室宿", "壁宿", "奎宿", "婁宿", "胃宿", "昴宿",
"畢宿", "觜宿", "參宿", "井宿", "鬼宿", "柳宿", "星宿",
"張宿", "翼宿", "軫宿"), .Names = c("蒼龍1", "蒼龍2",
"蒼龍3", "蒼龍4", "蒼龍5", "蒼龍6", "蒼龍7", "玄武1",
"玄武2", "玄武3", "玄武4", "玄武5", "玄武6", "玄武7",
"白虎1", "白虎2", "白虎3", "白虎4", "白虎5", "白虎6",
"白虎7", "朱雀1", "朱雀2", "朱雀3", "朱雀4", "朱雀5",
"朱雀6", "朱雀7")), 南極星區 = "南極星區"), .Names = c("三垣",
"四象", "二十八宿", "南極星區"))
这个想法是利用结构化数据为星座表上的每个项目生成唯一索引。
以下是我如何开始这样做的事情:
yxsl <- unlist(yxs) #flatten the list
sno <- tibble(sno=names(yxsl), 垣.宿.區=yxsl) #generate index from header data on flattened list
sno$sno <- gsub("星區|二十八宿.", "", sno$sno) #remove unwanted text on the index
我遇到了rle
函数,它返回变量中每个更改的长度,这在索引生成过程中应该会有所帮助。
i <- rle(constellation$sno) #Run Length Encoding
现在我需要做的就是让R扩展i$lengths
中给出的数值向量值,每个数字从1开始计算,以生成每个类别更改的重复索引号,在原始索引的后面。
我应该怎么做呢? 是否有更好和/或更简单的方法来做到这一点?
这是最终的代码:
i <- sequence(i$lengths) %>% sprintf("%02d", .)
constellation$sno <- paste0(constellation$sno, "-", i)
答案 0 :(得分:3)
我们可以使用sequence
sequence(v1)