簡體   English   中英

我的因素在做作期間變成整數:我不想要這個

[英]My Factors are turned into integer during affectation: I don't want this

有一個數據框(第 1 幀),其中包含由因子組成的列(事實),我創建了一個新的數據框(第 2 幀),如下所示:

Matching_list <- setNames(data.frame(matrix(ncol = 3, nrow = nrow(HH))), c("ProIDS", "Pol_Centre", "Dist"))

現在,當我從變量中選擇一些元素時,事實上,在第一個數據幀中並將它們影響到新數據幀,所有這些元素都變成了整數。 所以,我看到整數(我不知道它們來自哪里的數字)而不是第一個數據幀中的原始描述。

你能給我一些提示嗎,我怎樣才能在不丟失信息的情況下進行做作(我的意思是,保持我的因素在第一個數據框中)

這是您的問題的完全試探性的解決方案(因為您沒有提供任何可重現的數據)。

假設你有這樣的數據:

df1 <- data.frame(fact = LETTERS[1:10])

如果您查看變量fact的結構,您會發現它是一個因素:

str(df1)
'data.frame':   10 obs. of  1 variable:
 $ fact: Factor w/ 10 levels "A","B","C","D",..: 1 2 3 4 5 6 7 8 9 10

現在進一步假設,如您所說,您有另一個數據框,如下所示:

set.seed(100)
df2 <- data.frame(varX = rnorm(10))

並且正是這個數據框,你想根據某些條件從fact分配一些因子級別,並且想要在輸出中不是整數而是實際因子級別,這可以使用levels來完成:

df2$fact <- ifelse(df2$varX < 0, levels(df1$fact)[1], NA) # if varX < 0 "A" else NA
df2
          varX fact
1  -0.50219235    A
2   0.13153117 <NA>
3  -0.07891709    A
4   0.88678481 <NA>
5   0.11697127 <NA>
6   0.31863009 <NA>
7  -0.58179068    A
8   0.71453271 <NA>
9  -0.82525943    A
10 -0.35986213    A

但請注意,如果您現在檢查df2的結構,R 已將df2$fact轉換為字符變量:

str(df2)
'data.frame':   10 obs. of  2 variables:
 $ varX: num  -0.5022 0.1315 -0.0789 0.8868 0.117 ...
 $ fact: chr  "A" NA "A" NA ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM