在r中创建一系列值标签

在r中创建一系列值标签,r,label,R,Label,我的数据如下所示: outc_n state region largezip1_outc 96 FL 1 largezip2_outc 74 FL 2 largezip3_outc 251 FL 3 largezip4_outc 176 FL 4 largezip5_outc 161 FL 5 largezip6_outc 95 FL

我的数据如下所示:

               outc_n state region
largezip1_outc     96    FL      1
largezip2_outc     74    FL      2
largezip3_outc    251    FL      3
largezip4_outc    176    FL      4
largezip5_outc    161    FL      5
largezip6_outc     95    FL      6
如何为区域自动创建标签,使其看起来像这样

               outc_n state   region
largezip1_outc     96    FL   FL-L-1
largezip2_outc     74    FL   FL-L-2
largezip3_outc    251    FL   FL-L-3
largezip4_outc    176    FL   FL-L-4
largezip5_outc    161    FL   FL-L-5
largezip6_outc     95    FL   FL-L-6
谢谢

library(dplyr)

dat <- 
read.table(text = "               outc_n state region
largezip1_outc     96    FL      1
largezip2_outc     74    FL      2
largezip3_outc    251    FL      3
largezip4_outc    176    FL      4
largezip5_outc    161    FL      5
largezip6_outc     95    FL      6")

dat %>%
  mutate(region = paste(state, "L", region, sep = "-"))

您可以通过一些小的编辑以编程方式更改paste语句中取代L的内容。

假设您想添加L,因为行名的第一个字母是L,我们可以使用paste来连接不同的字符串

dat$region <- with(dat, paste(state,
                              toupper(substring(rownames(dat), 1, 1)),
                              region,
                              sep = "-"))
dat
#                outc_n state region
# largezip1_outc     96    FL FL-L-1
# largezip2_outc     74    FL FL-L-2
# largezip3_outc    251    FL FL-L-3
# largezip4_outc    176    FL FL-L-4
# largezip5_outc    161    FL FL-L-5
# largezip6_outc     95    FL FL-L-6
资料

使用data.table:


在你想要的输出中,L是什么意思?是largeso的缩写,它们都是L还是仅仅是L,因为第一列写的是largezip。。。?
dat <- read.table(text = "               outc_n state region
largezip1_outc     96    FL      1
                  largezip2_outc     74    FL      2
                  largezip3_outc    251    FL      3
                  largezip4_outc    176    FL      4
                  largezip5_outc    161    FL      5
                  largezip6_outc     95    FL      6",
                  header = TRUE, stringsAsFactors = FALSE)
 df <- read.table(header=T, text="large outc_n state region
                       largezip1_outc     96    FL      1
                       largezip2_outc     74    FL      2
                       largezip3_outc    251    FL      3
                       largezip4_outc    176    FL      4
                       largezip5_outc    161    FL      5
                       largezip6_outc     95    FL      6")

library(data.table)
setDT(df)
## using paste0 to paste different values of columns desired and getting 
## first letter of first column and converting it to upper case as desired
df[, region := paste0(state, "-", toupper(substr(large, 1, 1)), "-", region)]


           large   outc_n state region
1: largezip1_outc     96    FL FL-L-1
2: largezip2_outc     74    FL FL-L-2
3: largezip3_outc    251    FL FL-L-3
4: largezip4_outc    176    FL FL-L-4
5: largezip5_outc    161    FL FL-L-5
6: largezip6_outc     95    FL FL-L-6