我想对 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 将只包含苹果和香蕉列。
这可能吗?到目前为止我找到的所有答案都只能根据列名称选择列,但我想根据列中的单元格值进行选择。谢谢你!
我有一个包含 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)
有谁知道是否可以做到这一点,如果可以,怎么做?谢谢你!