小编Emi*_*ily的帖子

是否可以根据列中的任何值选择 r 中的列?

我想对 df 进行子集化,以仅包含任何行中包含特定值的列。

例如,如果我有:

year = c(1990,1991,1992,1993,1994,1995,1996,1997,1998,1999)
apple = c(1,4,6,8,9,9,2,4,7,4)
orange = c(7,1,5,5,2,1,7,1,3,8)
banana = c(9,9,4,8,1,3,6,7,5,9)
lemon = c(8,3,3,3,2,5,6,7,2,4)
df = data.frame(year,apple,orange,banana,lemon)

df
Run Code Online (Sandbox Code Playgroud)

我只想选择列中任意位置有 9 的列,这样我的 df 将只包含苹果和香蕉列。

这可能吗?到目前为止我找到的所有答案都只能根据列名称选择列,但我想根据列中的单元格值进行选择。谢谢你!

select r subset distinct-values

6
推荐指数
1
解决办法
1942
查看次数

是否可以根据当前类更改数据框中多列的类?

我有一个包含 500 多个列的大型数据框,其中包含各种顺序的各种类。示例数据:

col1    col2    col3    col4    col5    col6
 2      red      1.2      5       5      5.7
 4     banana    2.3      0       6      5.2
 8      two      2.4      9       8      5.4
 2     first     1.6      7       9      5.9
Run Code Online (Sandbox Code Playgroud)

我正在尝试根据列当前的类别来更改列的类别。例如,我也想将当前属于“整数”类的每个列更改为“数字”类,但保留当前属于“字符”类的所有列不变。这可能吗?

我尝试使用 for 循环,但是当我以这种方式设置它时,它将列类读取为“data.frame”而不是“numeric”。

for(i in 1:ncol(df)){
  ifelse(class(df[,i])=="integer",
         as.numeric(df[,i]),NA)
}
Run Code Online (Sandbox Code Playgroud)

我还尝试使用 apply 但无法弄清楚如何正确编码条件或让它仅循环遍历我的一些列,而不创建一个向量专门命名具有我想要更改的类类型的所有列。

cols <- colnames(df[,which(is.Class("integer"))])
df[,cols] = apply(df[,cols], 2, function(x) as.numeric(x));
Run Code Online (Sandbox Code Playgroud)

有谁知道是否可以做到这一点,如果可以,怎么做?谢谢你!

for-loop r class apply multiple-columns

1
推荐指数
1
解决办法
486
查看次数

标签 统计

r ×2

apply ×1

class ×1

distinct-values ×1

for-loop ×1

multiple-columns ×1

select ×1

subset ×1