[英]Factors being changed to numeric when I don't want them to be, when moving data from one dataframe to another
[英]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.