将值分配给数据框中特定列中的文本

时间:2015-02-04 17:34:29

标签: r

我有一个包含超过200万行的CSV。其中一个名为" DEPARTMENTS"有44种不同类型的文本值。我希望用数字代替它们:

  • 例如DELI = 1
  • 肉= 2
  • 等等。

在DEPARTMENT列下的每一行显示DELI,我希望将其替换为数字1和Meat 2,依此类推。

我设法找到一些代码来识别所有唯一值和长度

unique_v <- (unique(grouped$DEPARTMENT)
length (unique_v)

结果

[1]                 AUTOMOTIVE      CHARITABLE CONT CHEF SHOPPE     CNTRL/STORE SUP
 [6] COSMETICS       COUP/STR & MFG  DAIRY DELI      DELI            DELI/SNACK BAR 
[11] DRUG GM         ELECT &PLUMBING FLORAL          FROZEN GROCERY  GARDEN CENTER  
[16] GM MERCH EXP    GRO BAKERY      GROCERY         HBC             HOUSEWARES     
[21] KIOSK-GAS       MEAT            MEAT-PCKGD      MEAT-WHSE       MISC SALES TRAN
[26] MISC. TRANS.    NUTRITION       PASTRY          PHARMACY SUPPLY PHOTO          
[31] PORK            POSTAL CENTER   PROD-WHS SALES  PRODUCE         RESTAURANT     
[36] RX              SALAD BAR       SEAFOOD         SEAFOOD-PCKGD   SPIRITS        
[41] TOYS            TRAVEL & LEISUR VIDEO           VIDEO RENTAL   
44 Levels:   AUTOMOTIVE CHARITABLE CONT CHEF SHOPPE CNTRL/STORE SUP ... VIDEO RENTAL
> length(unique_v)
[1] 44

如果有人可以将我的功能命名为使用以实现这一目标,我将不胜感激。我看了一眼,却找不到多少东西。也许我在找错了地方。

1 个答案:

答案 0 :(得分:0)

如果我们需要将“character”元素转换为“numeric”,一个选项是转换为“factor”类,指定levels然后通过as.numeric强制为“numeric” 。在具体示例中,如果我们需要用“numeric”元素替换“旧”列元素

groupedData$DEPARTMENT <- as.numeric(factor(groupedData$DEPARTMENT,
                  levels=sort(unique(grouped$DEPARTMENT))))

然后,我们可以使用write.csv

将结果写回文件